表格即使出现验证错误也会提交

时间:2013-03-29 16:20:15

标签: javascript html forms submit

即使存在验证错误,表单也会提交。如果出现验证错误,如何禁用提交按钮?这是.js文件

,submitFu:function(){
_.validateFu(_.labels)                          
if(!_.form.has('.'+_.invalidCl).length)
    $.ajax({
        type: "POST",
        url:_.mailHandlerURL,
        data:{
            name:_.getValFromLabel($('.name',_.form)),
            email:_.getValFromLabel($('.email',_.form)),
            phone:_.getValFromLabel($('.phone',_.form)),
            //fax:_.getValFromLabel($('.fax',_.form)),
            //state:_.getValFromLabel($('.state',_.form)),
            message:_.getValFromLabel($('.message',_.form)),
            owner_email:_.ownerEmail,
            stripHTML:_.stripHTML
        },
        success: function(){
            _.showFu()
        }
    })          
},
showFu:function(){
_.success.slideDown(function(){
    setTimeout(function(){
        _.success.slideUp()
        _.form.trigger('reset')
    },_.successShow)
})
},

以下是表格:

    <form id="contact-form" action="contactTq.php" method="post">
                    <div class="success"> Contact form submitted! <strong>We will be in touch soon.</strong></div>
                    <fieldset>
                        <label class="name">
                            <input type="text" name="name" value="Enter Your Name:" >
                            <span class="error">*This is not a valid name.</span>
                            <span class="empty">*This field is required.</span>
                            <span class="clear"></span>
                        </label>
                        <label class="email">
                            <input type="text" name="email" value="Enter Your E-mail:">
                            <span class="error">*This is not a valid email address.</span>
                            <span class="empty">*This field is required.</span>
                            <span class="clear"></span>
                        </label>
                        <label class="phone">
                            <input type="text" name="phone" value="Enter Your Phone (optional):">
                            <span class="error">*This is not a valid phone number.</span>
                            <span class="clear"></span>
                        </label>
                        <label class="message">
                            <textarea name="msg">Enter Your Message:</textarea>
                            <span class="error">*The message is too short.</span>
                            <span class="empty">*This field is required.</span>
                            <span class="clear"></span>
                        </label>
                        <div class="buttons"><strong><a class="button" data-type="reset">Reset<span></span></a></strong><strong><a class="button" data-type="submit" href="javascript:{}" onclick="document.getElementById('contact-form').submit();">Submit<span></span></a></strong></div>
                    </fieldset>
                </form>

3 个答案:

答案 0 :(得分:0)

Knockout.js能够完美地完成你正在寻找的东西。您可以将现有的javascript放入ViewModel,然后在按钮上放置数据绑定,以便在所有字段都验证时启用。您可以在此处查看如何执行此操作:http://knockoutjs.com/documentation/enable-binding.html

答案 1 :(得分:0)

单击按钮后,您似乎正在提交表单,因为onclick处理程序编写如下:

onclick="document.getElementById('contact-form').submit();"

只需更改onclick处理程序即可执行submitFu函数,这应该可以解决问题。

答案 2 :(得分:0)

将提交按钮的onclick事件更改为     onclick =“return submitFu()”

如果验证失败,则返回false,表单将不会提交。我认为您可以对表单的onsubmit事件执行相同的操作。