2010-11-18 162 views
3

當用戶關注某個元素時,我會顯示一個保存按鈕。在焦點上,我刪除了保存按鈕。只有當另一個元素沒有被點擊時jQuery-聚焦輸出

alt text

用戶可以通過按下回車即可提交輸入或點擊保存。當他們點擊保存按鈕時,輸入失去焦點並且保存按鈕被移除,因此不註冊點擊。如果保存按鈕被點擊了,我可以在聚焦中告訴我嗎?

在我的對焦功能,我做這樣的事情:

 $('#save_button').click(function(){ 
      saveEditingField(this); //save input 
      $('#save_button').die("click"); 
     }); 

     $('.editing').focusout(function(e) { 
      $('#isediting').attr('value','false'); 
      $('#edit_controls').remove() 
     }); 

我已經嘗試添加一個延遲刪除(),但輸入之間的互聯時,它顯示多個保存按鈕(而其他正在去除)。

任何想法?

+0

它會幫助使用.hide()而不是.remove()? – 2010-11-18 11:52:15

+0

即使隱藏它也會在註冊點擊之前隱藏該元素。 – christo16 2010-11-18 12:05:04

回答

6

我認爲你只需要在聚焦和刪除/隱藏按鈕之間稍微超時。

+0

超時值必須至少爲100才能註冊點擊,在輸入之間切換時仍會顯示多個保存按鈕。 – christo16 2010-11-18 12:37:58

+0

因此,只要隱藏所有按鈕(如果焦點被觸發)(添加屬於特殊輸入的按鈕之前)。 – 2010-11-18 13:23:51

0

創建包含兩種元素(輸入文本和按鈕)一個div和focusOut事件綁定到該div

+0

好主意,雖然不起作用 – anthonygore 2016-03-12 10:28:16

4

可以檢查鼠標在按鈕上事件的內容隱藏按鈕之前。

概念證明這裏:http://jsfiddle.net/dnsEM/

這個實現是一個小問題是,保存按鈕,如果輸入框失去重點,而鼠標在按鍵和鼠標上只被隱藏了不消失。

相關問題