显示和隐藏选择元素会杀死Chrome

时间:2009-12-30 15:11:46

标签: jquery google-chrome

我有两个选择输入设置为display:none。基于另一个元素中的change(),我使用jQuery来show()hide()。我的所有浏览器测试看起来都很棒,除了因“出错了......”消息而死的Chrome。这是我的功能

   $(document).ready(function(){
    $("#supplier_type").change(function () {
      if ($("#supplier_type").val() == 'Wholesaler') {
        $("#retail_fulfillment").hide("slow");
        $("#retail_fulfillment").val("");
        $("#wholesale_fulfillment").show("slow");
      } else {
        if ($("#supplier_type").val() == 'Retailer') {
        $("#wholesale_fulfillment").hide("slow");
        $("#wholesale_fulfillment").val("");
        $("#retail_fulfillment").show("slow");
        }
      }
    });

有人对此有任何建议吗?

3 个答案:

答案 0 :(得分:1)

#wholesale_fulfillment#retail_fullfillment都是select-elements,不是吗?您将select元素的值设置为nothing。我猜这就是问题;这是不可能的。

这将是您的代码:

 $(document).ready(function(){
    $("#supplier_type").change(function () {
        if ($(this).val() == 'Wholesaler') {
            $("#retail_fulfillment").hide("slow")
            //$("#retail_fulfillment").find('option.empty').attr('selected', 'selected');
            $("#wholesale_fulfillment").show("slow");
        } else {
            if ($(this).val() == 'Retailer') {
            $("#wholesale_fulfillment").hide("slow");
            //$("#wholesale_fulfillment").find('option.empty').attr('selected', 'selected');
            $("#retail_fulfillment").show("slow");
            }
        }
    });
});

如果您仍想选择带有空值的<option/> - 代码,只需在该<option/> - 代码中添加一个类,并取消注释已注释的Javascript代码:

<select id="#wholesale_fulfillment">
    <option value="" class="empty">---</option>
    <option value="something">Wholesaler</option>
</select>

答案 1 :(得分:0)

根据上面的每个naivists的评论,我试着调用没有参数的hide()。这并没有解决问题,但从show()和hide()中删除args确实解决了Chrome的问题。

答案 2 :(得分:0)

  

有人对此有任何建议吗?

是。 See if a bug has already been filed for this issue.

如果没有,请提交一份。包括一个最小的测试用例; pastehtml.com对于那种事情很好。

尽可能地破解崩溃。