2010-06-14 97 views
1

我有一個搜索文本字段和搜索按鈕,當按鈕被點擊文本字段中的默認文本或空值時,會彈出一個警告並將焦點設置回搜索文本字段。這在所有主流瀏覽器上運行良好,但不適用於Safari瀏覽器。focus()jQuery函數在Safari中不起作用,但在所有其他瀏覽器上都能正常工作?

我試過它甚至與jQuery的出,但沒有奏效。當焦點落在搜索文本字段上時,我有另一個jQuery函數,是這個問題。

將焦點設置在搜索文本的代碼是:

if (defaults.keyword == SEARCH_TIP || defaults.keyword == '') { 
    alert(SEARCH_NULL); 
    $('#store_search_keyword').focus(); 
    return false; 
} 

焦點的代碼是:

var search_dom = $('#store_search_keyword'); 
var search_text = search_dom.val(); 
search_dom.focus(function(){ 
    if ($(this).val() === SEARCH_TIP) { 
     $(this).val(''); 
    } 
}); 

任何幫助表示讚賞,感謝..

+0

請參閱http://stackoverflow.com/questions/2913175 – Pointy 2010-06-14 15:59:42

回答

2

你應該叫原生DOM focus()方法如下:

document.getElementByID('store_search_keyword').focus(); 
+0

我試過了,沒有奏效。我還有另外一個重點,我不確定是所有這些麻煩的原因? – pMan 2010-06-14 15:04:54

0

在Safari中無法正常工作。

http://whatsthepointy.blogspot.com/2010/05/safari-focus-and-popup-alerts.html

的問題是由您的處理程序, 「警報()」 而引起的。 Safari在清除警報框後並沒有意識到主窗口重新獲得焦點,當Safari不認爲它是重點應用時,它不會注意.focus()調用任何東西

+0

但我也有這個問題,甚至沒有使用alert() 我試圖在按鈕單擊事件中使用以下函數(使用jQuery): setTimeout(function(){$(「#input_name」)[0 ] .focus();},2000) 當用戶點擊另一個輸入元素,例如點擊該按鈕後的「#input_zip」,iOS上的Safari會顯示屏幕鍵盤。兩秒後「#input_zip」將失去焦點,鍵盤消失,但「#input_name」永遠不會獲得焦點!?!?! – Klaus 2011-09-22 17:52:11

+0

鍵盤的外觀可能與「alert()」對話框的效果類似。 Safari認爲它不是鍵盤的前景「應用程序」,所以它忽略了對「.focus()」的調用。 (我當然不知道,但我從來沒有做過移動網絡的東西,但我確實知道Safari在拒絕前臺應用程序的調用時確實堅定地拒絕「focus()」,而且它非常愚蠢至少在「alert()」情況下也是如此。) – Pointy 2011-09-22 18:29:50

相關問題