JQuery验证停止表单提交时出现错误

JQuery validation stop form submission when there are errors

本文关键字:错误 表单提交 验证 JQuery      更新时间:2023-09-26

我有麻烦的形式Jquery验证,其中的形式是提交,尽管有错误的形式

我在这里检查了其他的解决方案,但没有一个对我有效。

// validate.js file
function setupFormsValidation(formName){
    // validate
    $(formName).validate({
        onfocusout:false,
        onkeyup:false,
        onclick:false,
        focusInvalid: false,
        errorPlacement: function(error, element) {
            if (element.parents('.inputgroup').length) {
                error.insertBefore(element.parents('.inputgroup'));
                element.parents('.inputgroup').addClass('error');
            } else {
                error.insertBefore(element);
            };            
        },
        showErrors: function (errorMap, errorList) {
            // Code to process errors
    });
    // Code for initializing the form etc

};  //setupFormsValidation  

在我的表单中,代码如下:

    <form action="thankyou.php" class="frmValidate" id="change-dept-form" method="post" name="change-dept-form">
        <fieldset class="inlinelabels">
        <legend><br /> Department name and code change information</legend>
        <div class="row required" id="txt_current_dept_code_row">
            <label class="required" for="txt_current_dept_code">Current department code (3 characters min, 4 characters max):</label> 
            <input class="required" data-min-length="3" id="txt_current_dept_code" name="txt_current_dept_code" required="required" type="text" />
        </div>
        <div class="row required" id="faculty2_row">
            <label for="faculty2">Faculty:</label>
                <select class="required" id="faculty2" name="faculty2" required="required">
                    <option value="">- Select -</option>
                    <option value="Arts">Arts</option>
                    <option value="Business">Business</option>
                </select>
        </div>
        </fieldset>
        <div class="row buttons">
            <input id="mySubmit" type="submit" value="Submit" />
            <input type="reset" value="Clear" />
        </div>
    </form>
<script src="../../assets/js/validate.js" type="text/javascript"></script>
$(document).ready(function(){
    setupFormsValidation('#change-dept-form');
    $("input[type='submit']").click(function(e){
       $form = $('#change-dept-form');
        if ($form.valid()){
            alert('Test'); 
            // need code to submit
        } else {
            alert('Show errors');
        };    
    });
});

我在if ($form.valid()){上有一个断点,它在那之后不运行任何代码。它甚至没有显示Test alert或show Errors alert

您没有取消提交,这就是为什么无论是否有错误都要进行提交的原因。当出现错误时,您需要取消提交按钮的默认行为

} else {
    alert('Show errors');
    return false; // <-- This should do the trick
};

单击提交按钮时,onclick: false选项禁用验证。这就是为什么没有验证就提交了表单。