【问题标题】:jquery live method in combobox interaction组合框交互中的jquery live方法
【发布时间】:2025-12-30 03:55:12
【问题描述】:

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

你有更好的想法/更短的建议吗 谢谢你

【问题讨论】:

  • 我认为一些可接受的语法和拼写可以帮助你多一点。我们非常重视格式正确的问题。
  • 4 个空格。 *.com/editing-help,但此处的常见问题解答不会告诉您句子以大写字母开头。
  • @Joseph Silvashy:并非世界上每个人都能说一口流利的英语。有些人在用外语表达他们想表达的东西时遇到问题。没有必要攻击。
  • 还不错,但我不知道 leet speak 比英语更受欢迎。我想,如果我在一个以口语为主的社区寻求帮助,我会更重要。
  • @Joeseph Silvashy。从什么时候开始,“leet”出现在牛津词典中。吃自己的狗粮。

标签: jquery combobox live onchange


【解决方案1】:

尝试在live() 方法中使用change 而不是onchange。另外,如果我没记错的话,您需要 jQuery 1.4+ 才能将 live 与 change 事件一起使用,因为代码仅在 1.4+ 中实现以处理 change 事件的委托。

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

【讨论】:

  • 对其进行了测试,就您的问题而言,它可以按预期工作。我会仔细检查你的语法,也许你有其他代码影响你给我们的示例。
  • 它确实适用于 1.4+。如何获取更改前选择的值?
  • 您需要观察它上面的click 事件,获取它的值,然后将其与更改后的值进行比较。事实上,在您的情况下,您根本不需要 live() 函数。
【解决方案2】:

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

【讨论】: