2010-02-28 2 views
0

Я пытаюсь сделать следующее в JQuery. У меня есть 2 comboboxes, и я хочу убедиться, что их выбранные значения идентичны. Если пользователь выбирает значение в одном из комбо, как и другое, я хочу предупредить «недействительный op» и установить для выбранного значения combo его предыдущее значение. так я писал:jQuery live метод в combobox взаимодействии

$("#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 не отвечает - просто нажмите и focusout 2) newFillerRule всегда идентичны valBeforeChange

Есть ли у вас лучшая идея/короче любой совет thank u

+0

Я думаю, что приемлемая грамматика и орфография могут помочь вам немного больше. Здесь мы высоко ценим хорошо сформированные вопросы. –

+0

как мне составить код? – ronk

+0

4 пространства. http://stackoverflow.com/editing-help, но в FAQ здесь не говорится, что предложения начинаются с заглавных букв. –

ответ

1

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

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

+0

не работает с «изменением» – ronk

+1

он делает с 1.4+ - http://jsbin.com/axope/edit –

+0

Протестировано, оно работает как ожидалось относительно вашего вопроса. Я внимательно рассмотрел ваш синтаксис, возможно, у вас есть другой код, влияющий на образец, который вы нам дали. –

0

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