2010-06-14 134 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

相关问题