Я ВВЕЛ элемент, и я хочу сбросить предыдущее значение (не необходимое исходное значение). Существует 2 пути:
Таким образом для № 2, как я могу создать нажатие клавиши ESC с помощью jQuery?
Вот SSCCE :
<!doctype html>
<html lang="en">
<head>
<title>SO question 2079185</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(':input.remember').each(function() {
$(this).attr('data-remember', $(this).val());
});
$('button.reset').click(function() {
$(':input.remember').each(function() {
$(this).val($(this).attr('data-remember'));
});
});
});
</script>
</head>
<body>
<input type="text" class="remember" value="foo">
<button class="reset">Reset</button>
</body>
</html>
Это в основном хранит исходное значение каждого входного элемента с классом , помните
во время нагрузки и инструктируют кнопку класса Сброс
, чтобы восстановить его, когда нажимается.
ESC работает, когда вы все еще находитесь внутри поля.
В тот момент, когда вы нажимаете кнопку, поле проиграет фокус, и значение будет сохранено в поле, поэтому вы не можете отменить его через процедуру браузера по умолчанию ..
Вы можете использовать только опцию # 1 ..
на размытие поля (событие, когда вы теряете фокус), вы должны хранить значение, и когда вы нажимаете кнопку вернуться к хранимую ..
Забудьте о генерировании событий, таких как нажатия клавиш. Хотя вы можете (различными непереносимыми способами) создавать события и направлять их в систему обработки событий, это вызовет только соответствующие функции обработчика событий; он не заставит браузер выполнять действия по умолчанию для пользовательского действия, такого как нажатие клавиши или щелчок мыши.
В любом случае поведение, о котором вы говорите при сбросе в Escape, является причудой IE: ни в одном другом браузере Escape не имеет никакого эффекта, и даже в IE он ненадежен. В частности, в нормальной форме одно нажатие Escape теряет изменения с момента последнего фокуса, а два нажатия Escape подряд сбрасывают всю форму до начальных значений. Однако, если в форме есть
, однократное нажатие Escape сбрасывает форму и фокусирует кнопку сброса. Это еще больше упрощает случайную потерю всего, что вы набрали, и является еще одной веской причиной не включать кнопку сброса в свои формы.
Итак, если вы хотите вернуться к начальным значениям, вы можете вызвать form.reset ()
. Если вы хотите сбросить только одно поле, вы можете установить input.value = input.defaultValue
(или input.checked = input.defaultChecked
для флажков / радио, и аналогично defaultSelected
в опциях).
Однако, если вы хотите, чтобы значение, которое присутствовало в тот момент, когда поле было последний раз сфокусировано, как IE ведет себя, когда нет кнопки сброса, вам придется запомнить некоторые переменные, например.:
var undonevalue= $('#undoable').val();
$('#undoable').focus(function() {
undonevalue= $('#undoable').val();
});
$('#undoer').click(function() {
$('#undoable').val(undonevalue);
});