2010-12-12 126 views
1

我有一個名爲#status的窗體。我想如果你關注表單輸入#statusUpdate,那麼提交按鈕#submitStatus應該出現。jQuery:焦點和模糊

我這樣做:

$("#statusUpdate").focus(function(){ 
    $("#submitStatus").show(); 
}); 

$("#statusUpdate").blur(function(){ 
    $("#submitStatus").hide(); 
}); 

這工作得很好,現在#submitStatus出現時,我的問題是,你想一下就可以了,它消失在同一splitsecond,因爲#statusUpdate焦點會丟失(模糊)並因此隱藏它。

這怎麼解決?

回答

2

奇怪的設計;) 你可以用hidesetTimeout這樣

setTimeout(function() { $("#submitStatus").hide(); }, 100) 

或使用jQuery delay(需要添加一些參數去hide()

0

如果我理解你的權利,你正在尋找對於隱藏「提交」按鈕並且想要顯示「提交」按鈕的內容,一旦獲得狀態更新的焦點。你在你的代碼片段中做的是,只要關注狀態更新框,就會顯示提交按鈕,但如果你嘗試點擊它,焦點會丟失,並立即隱藏提交按鈕。這不是理想的結果。上面的答案聽起來不錯,它可以讓你有足夠的時間點擊你需要的按鈕。總的片段將是

$("#statusUpdate").focus(function(){ 
    $("#submitStatus").show(); 
}); 

$("#statusUpdate").blur(function(){ 
    setTimeout(function() { $("#submitStatus").hide(); }, 600); 
}); 

它是很好的給一些600毫秒左右的用戶交互方式。