【问题标题】:onchange doesnt work for firefoxonchange 不适用于火狐
【发布时间】:2015-06-24 20:52:23
【问题描述】:

选择 onchange 适用于 Chrome 和 Opera,但不适用于 Firefox。你介意帮助我吗?我应该怎么做才能为所有浏览器修复它?

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>

【问题讨论】:

    标签: javascript jquery html firefox


    【解决方案1】:

    您永远不会删除 option 标签上的属性 selected。因此,在使用您的脚本后,您的 html 代码如下所示:

    <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 不知道该选择哪个选项。

    尝试使用函数val(),而不是设置属性selected

    From jQuery documentation

    [jQuery.val] 检查或选择与该组值匹配的所有单选按钮、复选框和选择选项。

    使用函数val(),它工作正常。

    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

    【讨论】:

    • 我在 Firfox 上使用了这个脚本,它正在工作。你有任何错误信息吗?
    • 我没有收到任何错误消息。它适用于 2 或 3 次更改,但更多它不起作用。
    • @Burak 我的错,我用正确的方式更新了我的答案
    • 好的,伙计,现在解决了。感谢您的关注 :)
    【解决方案2】:

    将函数脚本保存在head 中,否则会报错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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 2016-01-05
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多