0

keyUp() で AJAX を介してデータベースに対して検証される入力フィールドがあります。

入力したテキストに問題がなければ、a が有効になります。

テキスト入力フィールドの送信時に入力も切り替えたいと思います。

<div id="faq_dupe" class="center-modal">
    <form id="faq_form" onsubmit="AJAXsendData(); hideModal('faq_dupe'); return false;">
        <input id="faq_dupe_search" type="text" placeholder="e.g. 00AA1" class="noEnterSubmit"/>
        <button id="faq_dupe_img" type="submit" disabled>
            <img src="/img/val-no.png"/>
            <div>Submit</div>
        </button>
    </form>
    <script type="text/javascript">
        $('.noEnterSubmit').keypress(function(e){
            if ( e.which == 13 ) return false;
        });
    </script>
    <script type="text/javascript">
        $('#faq_dupe_search').keydown(function() {
            var faqimg = '<img src="/img/load-a-40px.gif"/><div>Submit</div>';
            document.getElementById('faq_dupe_img').innerHTML = faqimg;
        });
    </script>
    <script type="text/javascript">
        $('#faq_dupe_search').keyup(function() {
            AJAXvalFAQid($('#faq_dupe_search').val());
        });
    </script>
</div>

.noEnterSubmit クラスを追加および削除する AJAXvalFAQid() があります。

現時点では、.noEnterSubmit クラスが適用されているかどうかにかかわらず、Enter キーを押しても onsubmit="" のスクリプトは実行されません。

これが私が最終的に使用したものです:

<script type="text/javascript">
    function onsubmit(event) {
        if(noEnterSubmit === true){
            event.preventDefault();
        }else{
            sendData();
            hideModal('faq_dupe');
            return false;
        }
    }
</script>
4

2 に答える 2

1

送信機能を 1 つだけ持つ方が簡単です。次のようになります。

function onsubmit(event) {
    if (input_is_valid()) {
        // all is well, let the event continue
    } else {
        event.preventDefault(); // block the submit
        show_errors();
    }
}

<form id="faq_form">..</form>
<script type="text/javascript">
    $("#faq_form").submit(onsubmit);
</script>
于 2013-01-04T16:55:06.670 に答える
1

.noEnterSubmit最初のバインドを行うときに が入力に存在する場合、クラスが存在するかどうかにかかわらず、常にその入力にバインドされます。次のようにキーアップが発生した後、クラスを確認する必要があります。

$('#faq_dup_search').keypress(function(e){
    if($(this).hasClass('noEnterSubmit') && e.which == 13){
        return false;
    }
});
于 2013-01-04T16:51:46.237 に答える