组合框交互中的jquery live方法

时间:2010-02-28 08:32:40

标签: jquery combobox live onchange

我正在尝试在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

相同

你有更好的想法/缩短任何建议吗? 谢谢你

2 个答案:

答案 0 :(得分:1)

尝试使用change而不是onchange方法中的live()。另外,如果我的记忆正确地为我服务,你需要jQuery 1.4+来使用live和change事件,因为代码只在1.4+中实现,以处理change事件的委派。 p>

在将新选择的值与最后选择的值进行比较方面,您可以考虑存储使用$.data()的选定值 - 然后您可以将更改事件后的值与存储在$中的值进行比较。 cache(其中$ .data()存储值)并执行必要的操作。你也可以使用闭包来实现它。

答案 1 :(得分:0)

$(“#SelectGroupMargin”)与该函数的上下文中的$(this)相同。并使用“更改”进行实时通话