切换“输入提交”

时间:2013-01-04 16:48:52

标签: javascript jquery forms

我有一个输入字段,通过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>

我有AJAXvalFAQid()添加和删除.noEnterSubmit类。

截至目前,点击输入将不会执行onsubmit =&#34;&#34;中的脚本是否应用.noEnterSubmit类。

以下是我最终使用的内容:

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

2 个答案:

答案 0 :(得分:1)

如果在执行初始绑定时输入中存在.noEnterSubmit,则无论该类是否存在,它都将始终绑定到该输入。您需要在密钥发生后检查类,如下所示:

$('#faq_dup_search').keypress(function(e){
    if($(this).hasClass('noEnterSubmit') && e.which == 13){
        return false;
    }
});

答案 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>