Onchange does not work for firefox

Choose onchange for Chrome and Opera, but it does not work for Firefox. could you help me? What to do to fix this for all browsers?

var tehlikeliNace = ["01.11.07", "01.11.12"]; var aztehlikeliNace = ["01.30.04", "01.63.05"]; var coktehlikeliNace = ["01.61.04", "01.61.06"]; function naceKoduDegisti() { if (jQuery.inArray($("#nace_kod").val(), aztehlikeliNace) >= 0) { $("#tehlike_sinifi option[value='1']").attr('selected', 'selected'); } if (jQuery.inArray($("#nace_kod").val(), tehlikeliNace) >= 0) { $("#tehlike_sinifi option[value='2']").attr('selected', 'selected'); } if (jQuery.inArray($("#nace_kod").val(), coktehlikeliNace) >= 0) { $("#tehlike_sinifi option[value='3']").attr('selected', 'selected'); } } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select id="nace_kod" onchange="naceKoduDegisti()"> <option value="01.11.07">01.11.07</option> <option value="01.30.04">01.30.04</option> <option value="01.61.04">01.63.05</option> <option value="01.11.12">01.13.18</option> <option value="01.63.05">02.40.04</option> </select> <select id="tehlike_sinifi"> <option value="1">"Az Tehlikeli"</option> <option value="2">"Tehlikeli"</option> <option value="3">"Çok Tehlikeli"</option> </select> 
+6
source share
3 answers

You never remove the selected attribute in the option tag. So after using the script, your HTML code looks like this:

 <select id="tehlike_sinifi"> <option value="1" selected="selected">"Az Tehlikeli"</option> <option value="2" selected="selected">"Tehlikeli"</option> <option value="3" selected="selected">"Çok Tehlikeli"</option> </select> 

Firefox does not know which option to choose.

Try using the val() function instead of setting the selected attribute.

From jQuery documentation

[jQuery.val] checks or selects all radio buttons, checkboxes, and selects options that match a set of values.

The val() function works fine.

 if ($.inArray($("#nace_kod").val(), aztehlikeliNace) >= 0) { $("#tehlike_sinifi").val(1); } if ($.inArray($("#nace_kod").val(), tehlikeliNace) >= 0) { $("#tehlike_sinifi").val(2); } if ($.inArray($("#nace_kod").val(), coktehlikeliNace) >= 0) { $("#tehlike_sinifi").val(3); } 

Demo

0
source

Try entering code in javascript, for example:

 $( "#nace_kod" ).change(function() { naceKoduDegisti(); }); 

I did not have this particular problem, but in some cases I had problems accessing the function, this solved it for me. Hope this helps.

EDIT: Also a different sentence instead:

 $("#tehlike_sinifi option[value='1']").attr('selected', 'selected'); 

I would use:

 $("#tehlike_sinifi").val("1"); 
0
source

Store your script function in head otherwise it will give a ReferenceError: naceKoduDegisti is not defined error ReferenceError: naceKoduDegisti is not defined

Demo

 <head> .... <script type="text/javascript"> var tehlikeliNace = ["01.11.07", "01.11.12"]; var aztehlikeliNace = ["01.30.04", "01.63.05"]; var coktehlikeliNace = ["01.61.04", "01.61.06"]; function naceKoduDegisti() { if (jQuery.inArray($("#nace_kod").val(), aztehlikeliNace) >= 0) { $("#tehlike_sinifi option[value='1']").attr('selected', 'selected'); } if (jQuery.inArray($("#nace_kod").val(), tehlikeliNace) >= 0) { $("#tehlike_sinifi option[value='2']").attr('selected', 'selected'); } if (jQuery.inArray($("#nace_kod").val(), coktehlikeliNace) >= 0) { $("#tehlike_sinifi option[value='3']").attr('selected', 'selected'); } } </script> </head> 
0
source

Source: https://habr.com/ru/post/989673/


All Articles