Получить предыдущее и текущее выбранное значение раскрывающегося списка, используя выбранный в jquery
У меня есть выпадающий
<select name="manager" class="managerchosen-select-deselect" >
<option value="" >Select Manager</option>
<option value="xyz"> XYZ </option>
<option value="abc"> ABC</option>
<option value="pqr"> PQR</option>
</select>
Мне нужно 2 оповещения на основе 2 событий в этом выпадающем списке. Во-первых, когда я нажимаю на раскрывающееся меню, предыдущее значение должно отображаться в оповещении, а во-вторых, при смене раскрывающегося списка текущее выбранное значение должно отображаться в оповещении.
Я пробовал следующий код jquery, но я получаю только одно предупреждение, т. Е. Об изменении. Я не получаю оповещение о клике. Зачем?
var lastvalue;
$(".manager").bind("click", function(e){
lastValue = $(this).val();
alert(lastvalue);
}).bind("change", function(e){ alert('value changed');
changeConfirmation = confirm("Are You Sure?");
if (changeConfirmation) {
//proceed
} else {
$(this).val(lastValue);
}
});
3 ответа
Определить их отдельно
var lastvalue;
$(".manager").bind("click", function(e){
lastValue = $(this).val();
alert(lastvalue);
});
$(".manager").bind("change", function(e){
alert('value changed');
changeConfirmation = confirm("Are You Sure?");
if (changeConfirmation) {
//proceed
} else {
$(this).val(lastValue);
}
});
Вы можете использовать defaultValue для получения начального значения.
Учитывая вашу опечатку в объявлении выбора класса managerchosen-select-deselect
быть manager chosen-select-deselect
Вы можете попробовать это:
(function () {
var lastValue;
$(".manager").on('click', function () {
lastValue = this.value;
}).change(function() {
alert('Previous value: ' + lastValue);
alert('Current value: ' +this.value);
lastValue = this.value;
});
})();
Пожалуйста, убедитесь, что у вас есть manager
класс на выбранном вами элементе. Ты можешь использовать focus
событие, а не click
так как пользователь может нажать Tab и дойти до выпадающего меню, а затем изменить значение с помощью клавиш со стрелками, щелчок не будет работать в этом случае использования.
(function () {
var lastValue;
$(".manager").on('focus', function () {
lastValue = this.value;
}).change(function() {
alert('Previous value: ' + lastValue);
alert('Current value: ' +this.value);
lastValue = this.value;
});
})();
обновленная скрипка (с использованием фокуса): http://jsfiddle.net/wsejec8L/1/