.val("value") 在 jQuery 1.5 中没有按预期工作

Posted

技术标签:

【中文标题】.val("value") 在 jQuery 1.5 中没有按预期工作【英文标题】:.val("value") not working as expected in jQuery 1.5 【发布时间】:2012-06-16 16:57:52 【问题描述】:

我正在使用 jQuery 1.5.2 来操作表单上的 2 个下拉选择。我有一个特殊要求,如果选择了“其他”选项,则两个选择都必须是“其他”。

问题:

我的代码是这样的

$("#Select_One")
    .change(function() 
        if($(this).val() == "Other") 
            $("#Select_Two").val("Other");
        
        else 
            if($("#Select_Two").val() == "Other") 
                $("#Select_Two").val("");
            
        
    );

$("#Select_Two")
    .change(function() 
        if($(this).val() == "Other") 
            $("#Select_One").val("Other");
        
        else 
            if($("#Select_One").val() == "Other") 
                $("#Select_One").val("");
            
        
    );

问题在于,$("#Select_Two").val("Other"); 并没有强制执行两个字段都是“其他”的规则,而是在#Select_Two 下的每个<option> 上添加或覆盖value="Other" 属性。 #Select_One 也会发生同样的事情。

我的 html 来自一个 grails 模板

    <g:select id="Select_One"
              name="Units_One"
              class="Required DropDown"
              from="$Unit_One.values()"
              optionKey="value_"
              optionValue="$it.value_"
              noSelection="$['': message(code: 'units.no.selection')]"
     />
     <g:select id="Select_Two"
               name="Units_Two"
               class="Required DropDown"
               from="$Unit_Two.values()"
               optionKey="value_"
               optionValue="$it.value_"
               noSelection="$['': message(code: 'units.no.selection')]"
     />

在将 ether 字段设置为“Other”后,chrome 调试器向我显示的是这个...

<select name="Units_Two" id='Select_Two" class="Required DropDown">
  <option value="Other">Select Number</option>
  <option value="Other">Other</option>
  <option value="Other">1</option>
  etc...

这些函数的 else 子句按预期工作。


问题:

如何强制在一个字段中选择“其他”会自动在相应字段中选择“其他”?

【问题讨论】:

It seems like it works just fine. 请检查小提琴并发布您的 HTML。 它工作得很好,请参阅jsfiddle.net/U75Rw/2.. 我认为你有其他问题 感谢您的回复。我已经编辑了我的问题以包含更多的 HTML 位。另外,感谢关​​于 jsfiddle 的提示。我会将它添加到我的工具集中。 您的 HTML 是否按照 Grails 视图的预期生成?如果是这样,那么您的 javascript 中的其他内容正在更改它。您发布的 javascript 不会更改选项元素的 value 属性。 啊!我想我的缓存一定没有被清除。我在那里的确切代码现在应该像现在一样工作。我仍然有点困惑,因为我在 EI 和 Firefox 上的结果也很糟糕。再次感谢您的帮助。 【参考方案1】:

不妨试试:

$("#Select_One").change(function() 
    if ($(this).val() == "Other") 
        $("#Select_Two option[value='Other']").attr("selected",true);
    
    else 
        if ($("#Select_Two").val() == "Other") 
            $("#Select_Two").val("");
        
    
);

$("#Select_Two").change(function() 
    if ($(this).val() == "Other") 
        $("#Select_One option[value='Other']").attr("selected",true);
    
    else 
        if ($("#Select_One").val() == "Other") 
            $("#Select_One").val("");
        
    
);​

【讨论】:

可能想查看评论线索;昨天解决了:)

以上是关于.val("value") 在 jQuery 1.5 中没有按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

php数组$key,$val问题

jquery给input赋值 val()方法

jquery .attr("value") 方法取到的值不对的问题

$(":checked").val()=0是怎么回事

如何给某个控件赋值 jquery

Javascript获取GET参数