2

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

当用户在页面上的任意位置按下 enter 时,此代码会触发submitor按钮。next

我为CancelSubmit按钮使用了两个不同的 CSS 类,它们是.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>
4

1 回答 1

3

如果你只是想弄清楚哪个元素有焦点,你可以使用...

$(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 );
于 2013-01-04T22:32:19.303 回答