focus()jQuery函数在Safari中不起作用,但在所有其他浏览器上都能正常工作吗?

时间:2010-06-14 14:41:11

标签: javascript jquery safari focus textfield

我有一个搜索文本字段和搜索按钮,当在文本字段中使用默认文本单击按钮时,或者为空值时,会弹出警报并将焦点设置回搜索文本字段。这适用于所有主流浏览器,但不适用于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('');
    }
});

感谢任何帮助,谢谢..

2 个答案:

答案 0 :(得分:2)

您应该调用本机DOM focus()方法,如下所示:

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

答案 1 :(得分:0)

在Safari中无效。

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

问题是由处理程序中的“alert()”引起的。在警报框被清除后,Safari没有意识到它的主窗口重新获得焦点,并且当Safari认为它不是专注的应用程序时,它不会关注任何上的.focus()调用。