JQuery живой метод в combobox взаимодействии - PullRequest
0 голосов
/ 28 февраля 2010

Я пытаюсь сделать следующее в 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 ]

1 голос
/ 28 февраля 2010

Попробуйте использовать change вместо onchange в методе live(). Кроме того, если память мне не изменяет, вам понадобится jQuery 1.4+ для использования live с событием изменения, поскольку код был реализован только в 1.4+ для обработки делегирования для события change.

С точки зрения сравнения вновь выбранного значения с последним выбранным значением, вы можете рассмотреть возможность сохранения выбранного значения для использования $.data() - затем вы можете сравнить значение после события изменения со значением хранится в $ .cache (где $ .data () хранит значения) и делает все необходимое. Вы также можете реализовать это с помощью замыкания.

0 голосов
/ 28 февраля 2010

$ ("# SelectGroupMargin") совпадает с $ (this) в контексте этой функции И используйте «изменить» для живого вызова

...