有趣的問題 - 這可能不是很明顯,但「阻止」事件的原因是因爲它永遠不會發生。這是因爲更改事件觸發了您在該字段外單擊,並且即使您單擊該按鈕(看起來像您單擊該按鈕),它永遠不會發生(因爲警報框會阻止它)。
Inputbox的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!");
});
});
它爲我的罰款。 – alex 2011-04-15 02:54:57
使用此[fork](http://jsfiddle.net/Khez/YGPAv/)我似乎無法重現錯誤。沒有使用警報(因爲這些塊執行afaik)。 – Khez 2011-04-15 02:56:14