.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 中没有按预期工作的主要内容,如果未能解决你的问题,请参考以下文章