我有文字输入和按钮输入。
Textbox有一个onchange eventhander,按钮有一个click事件处理程序。
孤立无援,工作正常。但是,当我更改文本框中的某些文本并单击按钮时,onchange事件将首先触发并阻止点击触发。
如何在onchange之后触发click事件?或者至少弄清楚导致事件发生的原因是什么?
以下是jsfiddle示例:http://jsfiddle.net/4mQPe/
由于
答案 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!");
});
});