$("#myTextBox").on("change paste keyup", function() {
alert($(this).val());
});
Как сравнить новое значение, введенное пользователем, и текущее значение, которое уже было на входе?on() посмотреть изменения во входных данных
$("#myTextBox").on("change paste keyup", function() {
alert($(this).val());
});
Как сравнить новое значение, введенное пользователем, и текущее значение, которое уже было на входе?on() посмотреть изменения во входных данных
Сверх того, атрибут ввода value
фактически не обновляется при изменении его значения. Таким образом, вы можете просто сравнить .val()
к attr("value")
и обновить attr("value")
после внесения изменения:
EG:
$("#myTextBox").on("change paste keyup", function() {
alert($(this).attr("value")+" vs "+$(this).val());
$(this).attr("value",$(this).val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="myTextBox" value="abc" />
Вы можете сохранить предыдущее значение для самого элемента и получить его при изменении значения.
$("#myTextBox").on("change paste keyup", function() {
// Get previous and current value
var prevValue = $(this).data('value'),
currValue = $(this).val();
console.log(prevValue + ' === ' + currValue);
// Update the prevValue
$(this).data('value', currValue);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input id="myTextBox" type="text" />
Здесь вы можете использовать замыкание:
$("#myTextBox").on("change paste keyup", (function() {
var previousValue = $("#myTextBox").val();
return function() {
var newValue = $(this).val();
alert('Was ' + previousValue + " and now it's " + newValue);
previousValue = newValue;
};
})());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="myTextBox" value="abc" />
Причина слегка извилистый закрытия: она создает переменную previousValue
, что имеет продолжительность жизни больше, чем функция обработчика, но все же может быть доступна только этой функцией обработчика. Вы гарантированно не должны иметь именования коллизий с другими частями вашего кода.
хорошее решение !! Я думаю о возврате предыдущего значения в clickEvent TextBox, но ваше решение более чистое и понятное. – Sapikelio
Хм, зачем вам нужна функция в этом случае? и это функция возврата? Я не получаю это в части функции, выполняет ли функция позже? если да, то каково возвращение? – Jennifer
@Jennifer - Внешняя функция называется разом, сразу. Он генерирует новую функцию, которая действует как обработчик. Эта функция обработчика вызывается для каждого изменения и имеет доступ к переменной 'previousValue'. Вот страница о закрытии javascript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures –
В принципе вы можете сохранить любое значение в JavaScript вы можете сохранить или Сохраняйте предыдущие данные тремя распространенными способами:
Лучший способ вы делаете это с помощью переменной, так что-то вроде этого : var previousValue = $ (this) .val();
и доступ к нему после того, как ...
$("#myTextBox").on("change paste keyup", function() {
var preValue = $(this).val();
return function() {
var newValue = $(this).val();
consol.log('preValue: ' + preValue + 'newValue: ' + newValue);
preValue = newValue;
};
});
Возвращение происходит после того, как, так что он работает любит обратный вызов, в основном это происходит после того, как и в этом случае вы можете сохранить обе переменные ...
Вы» Вам нужно сохранить исходное значение в переменной. У DOM нет такой информации AFAIK. – Jeroen