当onchange接管时,我如何回到原始事件?

时间:2011-04-15 02:52:13

标签: javascript javascript-events

我有文字输入和按钮输入。

Textbox有一个onchange eventhander,按钮有一个click事件处理程序。

孤立无援,工作正常。但是,当我更改文本框中的某些文本并单击按钮时,onchange事件将首先触发并阻止点击触发。

如何在onchange之后触发click事件?或者至少弄清楚导致事件发生的原因是什么?

以下是jsfiddle示例:http://jsfiddle.net/4mQPe/

由于

1 个答案:

答案 0 :(得分:1)

有趣的问题 - 这可能不是很明显,但事件被“阻止”的原因是因为它永远不会发生。这是因为当您在字段外单击时触发更改事件,即使您单击按钮(看起来像您单击按钮),它也永远不会发生(因为警报框正在阻止它)。

输入框具有defaultValues,您可以合法地利用它来更新输入的默认值。以下示例可以解决您的问题。

$(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!");
});

});