簡體   English   中英

模糊事件會停止點擊事件

[英]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那么它可以完美地運行...

http://jsfiddle.net/PnmxM/7/

因為你正在使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM