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

Javascript 当onchange接管时,我如何回到原始事件?,javascript,javascript-events,Javascript,Javascript Events,我有文本输入和按钮输入 Textbox有一个onchange eventhander,按钮有一个click eventhandler 单独来看,两者都很好。但是,当我更改文本框中的一些文本并单击按钮时,onchange事件首先触发,并阻止单击触发 在onchange之后,我如何仍然触发click事件?或者至少找出是什么导致了onchange中的事件 以下是JSFIDLE示例: 谢谢有趣的问题-这可能并不明显,但事件之所以被“阻止”是因为它从未发生过。这是因为更改事件是在您单击字段外部时触发的,即

我有文本输入和按钮输入

Textbox有一个onchange eventhander,按钮有一个click eventhandler

单独来看,两者都很好。但是,当我更改文本框中的一些文本并单击按钮时,onchange事件首先触发,并阻止单击触发

在onchange之后,我如何仍然触发click事件?或者至少找出是什么导致了onchange中的事件

以下是JSFIDLE示例:


谢谢

有趣的问题-这可能并不明显,但事件之所以被“阻止”是因为它从未发生过。这是因为更改事件是在您单击字段外部时触发的,即使您单击按钮(看起来像是单击了按钮),它也不会发生(因为警报框正在阻止它)

Inputbox具有默认值,您可以合法地利用这些值在更改输入时更新输入的默认值。下面的例子应该可以解决您的问题

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

});

$(函数(){ $('#按钮')。绑定(“单击”,函数(){ 警报(“按钮点击”); }); $('#textbox').bind(“change”,function()){ //警报(“文本更改”); $('#container').html(“已更改!”); }); });
使用此选项,我似乎无法重现错误。没有使用警报(因为那些块执行afaik)。