как мне вернуться к исходному событию, когда onchange вступает во владение? - PullRequest
2 голосов
/ 15 апреля 2011

У меня есть текстовый ввод и кнопка ввода.

В текстовом поле есть обработчик события onchange, а в кнопке - обработчик события щелчка.

В изоляции оба работают нормально. Но когда я изменяю какой-то текст в текстовом поле и нажимаю на кнопку, сначала происходит событие onchange, которое предотвращает срабатывание щелчка.

Как я могу запустить событие click после замены? или хотя бы выяснить, что послужило причиной события в onchange?

Вот пример jsfiddle: http://jsfiddle.net/4mQPe/

Спасибо

1 Ответ

1 голос
/ 15 апреля 2011

Интересная проблема - это может быть неочевидно, но причина, по которой событие «предотвращено», заключается в том, что оно никогда не происходит.Это происходит потому, что событие изменения инициируется, когда вы щелкаете за пределами поля, и даже если вы нажимаете кнопку (похоже, что вы нажимаете кнопку), этого никогда не происходит (потому что окно предупреждения блокирует его).

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

$(function(){
    $('#button').bind("click",function(){       
        if($('#textbox').attr('defaultValue') != $('#textbox').val()) {
            alert("button clicked and value changed");
            $('#textbox').attr('defaultValue', $('#textbox').val());
        } else {
            alert("button clicked and value not changed")
        };
      });
});

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

<input type="text" id="textbox"/><br/>
<input type="button" id="button"/>

<div id='container'></div>



$(function(){
    $('#button').bind("click",function(){
          alert("button click");
      });
$('#textbox').bind("change",function(){
    //alert("text changed");
    $('#container').html("changed!");
});

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