我正在尝试在Jquery中做下一件事。 我有2个组合框,我想确保他们选择的值是相同的。如果用户选择其中一个组合中的值,就像另一个组合一样,我想提醒“无效操作”并将组合选择值设置为其先前的值。 所以我写道:
$("#SelectGroupMargin").live("onchange", function() {
// save the value before the change in case the change is invalid
var valBeforeChange = $("#SelectGroupMargin").val();
var currentLimitedRuleVal = $("#SelectGroup").val();
var newFillerRule= $(this).val();
// check that the new value does not colide with the value of the limited rule
// if it does colide alert the user and return to the former value
if (currentLimitedRuleVal == newFillerRule) {
alert("invalid op");
$("#SelectGroupMargin").text(valBeforeChange);
}
});
但我有几个问题: 1)onchange没有响应 - 只需点击并聚焦 2)newFillerRule始终与valBeforeChange
相同你有更好的想法/缩短任何建议吗? 谢谢你
答案 0 :(得分:1)
尝试使用change
而不是onchange
方法中的live()
。另外,如果我的记忆正确地为我服务,你需要jQuery 1.4+来使用live
和change事件,因为代码只在1.4+中实现,以处理change
事件的委派。 p>
在将新选择的值与最后选择的值进行比较方面,您可以考虑存储使用$.data()
的选定值 - 然后您可以将更改事件后的值与存储在$中的值进行比较。 cache(其中$ .data()存储值)并执行必要的操作。你也可以使用闭包来实现它。
答案 1 :(得分:0)
$(“#SelectGroupMargin”)与该函数的上下文中的$(this)相同。并使用“更改”进行实时通话