jquery是(“;: focus")在safari中不工作.如果任何解决方案($ ().parents(&

jquery is(" :focus" ) not working in safari. any solution for this IF($(this).parents('form').find('.back').is( ":focus" ) )

本文关键字:如果 工作 任何 解决方案 parents safari focus quot jquery      更新时间:2023-09-26

我使用jQuery,我有这段代码在我的common.js文件。

当用户在页面上任意位置按下回车键时,此代码将触发submitnext按钮。

我使用两个不同的CSS类CancelSubmit按钮,这是.btn类和所有Next按钮使用.back类。

此代码适用于Internet Explorer, FireFox和Chrome。只有Safari给我带来了麻烦。当用户关注Cancel然后按下Enter时,它提交表单而不是取消表单。

有人有解决这个问题的办法吗?我试了很多方法,但都不管用。

如果你有一个safari特定的解决方案或解决方案,适用于所有浏览器请让我知道,因为现在我无法改变我的JSP代码。

提前谢谢你。

// Common.js
$("form *").live('keypress', function (e) {
    if ($(this).parents('form').find('button[type=submit].btn, input
type=submit].btn').length <= 0) {
        return true;
    }
    if ($(this).parents('form').find('textarea').is(":focus")) {
        alert(' Function Call ');
        return true;
    } * * *
    if ($(this).parents('form').find('.back').is(":focus")) {
        return true;
    } * * *
    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
        $(this).parents('form').find('button[type=submit].btn, input
[type=submit].btn').click();
        return false;
    }
});
// test.jsp
<div class="back-link">  
    <div class="back-btn-wrap">              
        <html:cancel styleClass="back" onclick="bCancel=true">cancel</html:cancel>
    </div>
    <div class="btn-wrap">        
        <html:submit styleClass="btn" property="submitNext"> Submit / Next</html:submit>
    </div>
</div>

如果你只想知道哪个元素有焦点,你可以使用…

$(document.activeElement)

如果您不确定版本是否将是1.6或更低,您可以添加:focus选择器,如果它缺失…

(function ( $ ) {
    var filters = $.expr[":"];
    if ( !filters.focus ) { 
        filters.focus = function( elem ) {
           return elem === document.activeElement && ( elem.type || elem.href );
        };
    }
})( jQuery );