Как получить значение из поля ввода формы HTML при его вводе? - PullRequest
2 голосов
/ 25 января 2010

Как получить значение из поля ввода при его вводе?

Ответы [ 3 ]

5 голосов
/ 25 января 2010

onkeyup будет срабатывать при каждом отпускании ключа. Хотя это выглядит как решение, у него есть некоторые проблемы.

Если пользователь перемещает курсор с помощью стрелок, он срабатывает, и вы должны проверить себя, не изменилось ли значение поля.

Если пользователь копирует / вставляет значение в поле ввода с помощью мыши или нажимает кнопку отмены / повтора в браузере, onkeyup не запускается.

Как и в Mac или в Google Docs, я не хотел, чтобы кнопка сохранения отправляла формы в нашем приложении, вот как я это делаю. Любые комментарии или ярлыки приветствуются, так как они немного тяжелые.

  1. onfocus , сохранить текущее значение поля и запустить интервал для проверки изменений
  2. когда пользователь перемещает что-то во входных данных, происходит сравнение со старым значением, если другое значение происходит при сохранении
  3. onblur , когда пользователь отходит от поля, очистить интервал и обработчики событий

Вот функция, которую я использую, elm - ссылка на поле ввода, а после - функция обратного вызова, вызываемая при изменении значения:

<html>
<head>
    <title>so</title>
</head>
<body>
    <input type="text" onfocus="changeField(this, fldChanged);">
    <script>
        function changeField(elm, after){
            var old, to, val,
                chk = function(){
                    val = elm.value;
                    if(!old && val === elm.defaultValue){
                        old = val;
                    }else if(old !== val){
                        old = val;
                        after(elm);
                    }
                };
            chk();
            to = setInterval(chk, 400);
            elm.onblur = function(){
                to && clearInterval(to);
                elm.onblur = null;
            };
        };
        function fldChanged(elm){
            console.log('changed to:' + elm.value);
        }
    </script>
</body>
</html>
2 голосов
/ 25 января 2010

Я заметил, что вы использовали тег "jquery". Для jQuery вы можете использовать метод .keypress().

Из документации API:

Описание : привязать обработчик событий к «нажатию клавиши» JavaScript событие или вызвать это событие на элемент.

Событие будет срабатывать каждый раз, когда ввод клавиатуры регистрируется браузером.

.keydown() и .keyup() также доступны. Их поведение немного отличается от .keypress() и также описано в документации API.

Приятной особенностью jQuery является то, что вы можете использовать один и тот же код в Firefox, IE, Safari, Opera и Chrome.

2 голосов
/ 25 января 2010

используйте обработчик события onchange для поля ввода.

http://www.htmlcodetutorial.com/forms/_INPUT_onChange.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...