Событие изменения входа при размытии - PullRequest
0 голосов
/ 27 октября 2009

Мне нужно вызвать событие изменения входа, но только если значение изменилось. И мне нужно это сделать с клавиатуры события. Есть ли способ вызвать механизм изменения браузера, который либо инициирует событие изменения, либо не будет зависеть от того, было ли изменено значение?

Пример:

User clicks on an input field
User does not modify value of the field
user presses a key causing the input field to blue
onchange does not get triggered.

против

User clicks on an input field
User modifies the value of the field
user presses a key causing the input field to blue
onchange gets triggered.    

Возможно ли это? Или мне нужно сделать значение сохранения onfocus, сравнение onblur и, возможно, вызвать onchange, но только если onchange еще не был вызван, потому что пользователь только что ушел, нажав vs скажем, триггер клавиатуры.

Ответы [ 3 ]

1 голос
/ 27 октября 2009

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

<html>
<head>
<script language="javascript">
var startFieldValue = "Some value, possibly value of input when it is loaded";
var endFieldValue = "";
var focusFlag = 0;
function interact(keyEvent) {
    if(focusFlag == 1)
        return true;
    var key = keyEvent.keyCode? keyEvent.keyCode : keyEvent.charCode
    if(String.fromCharCode(key) == "a") {
        if(startFieldValue != endFieldValue) {
            var elem = document.getElementById('input-to-be-changed');
            elem.style.backgroundColor = "blue";
            startFieldValue = endFieldValue;
        }
    }
}
</script>
</head>
<body onkeypress="interact(event);">
<input id="input-to-be-changed" onchange="endFieldValue = document.getElementById('input-to-be-changed').value;" onfocus="focusFlag = 1;" onblur="focusFlag = 0;">
</body>

Просто прочитайте комментарий к предыдущему посту, хотя вы должны иметь общее представление о том, что происходит. Изменения убирают проверку на фокус и помещают listner (onkeypress) внутри каждого ввода. Функция взаимодействия должна принимать 2 значения - событие и идентификатор ввода, чтобы фокусироваться дальше. Также фокусировка нового элемента должна изменить startFieldValue. Извините, что не пишу сам код, но уже немного поздно, и мне действительно нужно немного поспать.

1 голос
/ 27 октября 2009

Какой это ключ? Если эта клавиша не является стандартной клавишей ввода, установите onchange, чтобы проверить поле на предмет изменения поля.

Вы также можете связать onkeypress, сделать документ и вернуть: false; когда нажата клавиша, которая меняет ввод на синий.

Немного больше контекста может помочь.

0 голосов
/ 13 февраля 2012

Не используйте методы jQuery blur () и focus (), но используйте оригинальные Javascript. Например: jQuery (селектор) [0] .blur (); В моем случае методы jQuery работают только в браузере Opera.

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