[英]Blur event stops click event
示例代碼: http : //jsfiddle.net/slolife/PnmxM/
即使有許多類似的問題,我也會問這個問題,但我覺得它們不一樣。
我有一個文本框,當它模糊時,應該做點什么。
我也有一個鏈接,總是可見的(似乎是其他問題的不同),點擊后,應該做一些事情。
觸發我的模糊處理程序,但點擊處理程序不會觸發。
有沒有正確的方法來處理這個?
更新
很多人指出警報引起了我的問題。 謝謝。 在我的真實代碼中,我沒有警報,而是從DOM中刪除文本框。
所以我更新了小提琴以更好地反映使用console.log調用而不是alert()調用。 任何額外的幫助表示贊賞。
這是因為第一個alert
打破了第二個alert
因為它是模態的。 看到這個:
在這里,我將消息附加到msgs
div,它按預期工作。
對於您更新的jsFiddle,這是一個(更新更新?)工作的:
您正在刪除onBlur
的輸入框,因此,垂直移動Add item
,因此點擊不再發生在Add item
(因為您的鼠標指針在此期間沒有移動),但是在某些情況下其他元素(在本例中為jsFiddle示例容器)。 移動Add item
在消失的input
元素上方解決了“如果可以的話,請點擊我”問題。
click事件未觸發,因為只有在釋放鼠標按鈕時才會觸發。 這種情況沒有發生,因為可以看到模態對話框窗口(警報窗口)。 如果您將警報更改為console.log
那么它可以完美地運行...
因為你正在使用alert
你正在中斷執行,這會導致我在Firefox中出現問題 - 但如果你切換到console.log
並確保打開一個控制台(如Firebug),你可以看到這兩個事件都會激活。
function onBlur() {
console.log('blur');
}
function addItem() {
console.log('add');
}
$(document).ready(function() {
$('#items').delegate('input','blur', onBlur);
$('#addItem').click(addItem);
});
根據您的要求,如果您無法重新排列UI,另一種解決方法是簡單地綁定到mousedown
事件而不是click
。 我已經添加了我自己的console.log()jsFiddle修改來演示。
我遇到了這個問題,其中的菜單顯示用戶何時關注文本框,並在模糊時隱藏。 菜單中的點擊沒有在Chrome中觸發,因為模糊隱藏了mousedown上的菜單,所以當鼠標重新啟動時,指針不再出現在菜單中(因為它已經消失),因為該處理程序隨后被調用在模糊隱藏菜單之前,我的點擊事件擊中了他們的目標。
只需在更新小提琴http://jsfiddle.net/slolife/PnmxM/后再嘗試。
將onBlur函數更新為此。
模糊和點擊將有效。
function onBlur() {
console.log('blur');
$('#item').val("test");
}
當前的問題是:點擊沒有觸發,因為“添加項目”的ui位置正在改變(因為文本字段消失)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.