Сброс ВВОДИТСЯ без ФОРМЫ

Я ВВЕЛ элемент, и я хочу сбросить предыдущее значение (не необходимое исходное значение). Существует 2 пути:

  1. Сохраните значение в другой переменной и вытащите его снова
  2. Нажмите клавишу ESC. Но я не хочу, чтобы пользователи нажали ESC, но нажали кнопку.

Таким образом для № 2, как я могу создать нажатие клавиши ESC с помощью jQuery?

5
задан HP. 16 January 2010 в 22:42
поделиться

3 ответа

Вот 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>

Это в основном хранит исходное значение каждого входного элемента с классом , помните во время нагрузки и инструктируют кнопку класса Сброс , чтобы восстановить его, когда нажимается.

6
ответ дан 13 December 2019 в 19:27
поделиться

ESC работает, когда вы все еще находитесь внутри поля.

В тот момент, когда вы нажимаете кнопку, поле проиграет фокус, и значение будет сохранено в поле, поэтому вы не можете отменить его через процедуру браузера по умолчанию ..

Вы можете использовать только опцию # 1 ..

на размытие поля (событие, когда вы теряете фокус), вы должны хранить значение, и когда вы нажимаете кнопку вернуться к хранимую ..

2
ответ дан 13 December 2019 в 19:27
поделиться

Забудьте о генерировании событий, таких как нажатия клавиш. Хотя вы можете (различными непереносимыми способами) создавать события и направлять их в систему обработки событий, это вызовет только соответствующие функции обработчика событий; он не заставит браузер выполнять действия по умолчанию для пользовательского действия, такого как нажатие клавиши или щелчок мыши.

В любом случае поведение, о котором вы говорите при сбросе в 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);
});
2
ответ дан 13 December 2019 в 19:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: