2011-11-09 64 views
3

我有兩個輸入共同組成一個語義單元(認爲小時和分鐘輸入一起形成時間輸入)。如果兩個輸入都失去焦點,我想調用一些Javascript函數,但如果用戶僅在這兩個函數之間跳轉,我不想觸發任何內容。作爲一個單元在多個元素上觸發onBlur

我試過將這兩個輸入封裝在一個div中,並將一個onBlur添加到div,但它從不觸發。

接下來,我嘗試在兩個輸入上添加onBlurs,並讓它們通過jQuery檢查其他的:focus屬性,但似乎在onBlur觸發下一個元素時尚未收到焦點。

有關如何實現此目的的任何建議?

編輯:有人質疑此目的。我想根據這些輸入中包含的值更新其他一些字段,但理想情況下,如果用戶仍在更新第二個輸入的過程中,我不想更新其他字段(例如,如果用戶標籤從第一個輸入到第二個輸入)。

回答

2
var focus = 0; 
$(inputs).focus(function() { focus++ }); 
$(inputs).blur(function() { 
    focus--; 
    setTimeout(function() { 
     if (!focus) { 
      // both lost focus 
     } 
    }, 50); 
}); 
+0

它也可能與零超時一起工作,但必須進行測試。 – lanzz

+0

是的,但既然你只能有一個專注,你可以使用'true'和'false'。 – lonesomeday

+0

如果使用布爾型標誌,則在某種程度上依賴於事件觸發順序。 – lanzz

0

這種行爲的目的是什麼? 模糊事件在字段失去焦點時觸發,並且一次只有一個字段可以獲得焦點。

你可以做些什麼,例如在驗證的情況下,對兩個字段都應用相同的模糊函數並檢查字段的值。

沒有上下文,很難爲您提供更多幫助。 d)。

+1

這比回答的評論。 –

3

我在這裏做一個工作示例: http://jsfiddle.net/bs38V/5/

它使用這樣的:

$('#t1, #t2').blur(function(){ 
setTimeout(function(){ 
    if(!$('#t1, #t2').is(':focus')){ 
     alert('all good'); 
    } 
},10); 
}); 
相關問題