2

jQuery を使用しており、common.js ファイルにこのコードがあります。

このコードは、ユーザーがページの任意の場所で Enter キーを押すと、submitまたはボタンを起動します。next

CancelボタンとSubmitボタンに2 つの異なる CSS クラスを使用しています。これらは.btnクラスであり、すべてのNextボタンがその.backクラスを使用します。

このコードは、Internet Explorer、FireFox、および Chrome で正常に機能します。苦労しているのはSafariだけです。ユーザーがフォーカスしCancelてから押すEnterと、フォームはキャンセルされずに送信されます。

誰かがこれに対する解決策を持っていますか? 私は多くのことを試しましたが、何もうまくいきません。

JSP コードを変更できないため、Safari 固有のソリューションまたはすべてのブラウザーで機能するソリューションをお持ちの場合はお知らせください。

前もって感謝します。

// 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 に答える