Javascript 当onchange接管时,我如何回到原始事件?
我有文本输入和按钮输入 Textbox有一个onchange eventhander,按钮有一个click eventhandler 单独来看,两者都很好。但是,当我更改文本框中的一些文本并单击按钮时,onchange事件首先触发,并阻止单击触发 在onchange之后,我如何仍然触发click事件?或者至少找出是什么导致了onchange中的事件 以下是JSFIDLE示例:Javascript 当onchange接管时,我如何回到原始事件?,javascript,javascript-events,Javascript,Javascript Events,我有文本输入和按钮输入 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)。