文件上载后绕过JQuery验证

时间:2013-11-06 03:47:11

标签: jquery forms jquery-validate

我正在使用JQuery Validate函数来验证表单,该表单包含多个输入字段和两个文件上传。

表单工作正常。我可以同时提交两个文件。

然后是验证问题,这就是问题;

如果我尝试提交一个空表单,则会显示每个必填字段的错误消息(没有问题,这是我打算首先做的)。 但是,当文件上传完成时,验证规则被绕过(或提交表单),而其余必填字段为空

这是我的 JQuery 代码:

$(document).ready(function(){

    $("#MyForm").validate({

        errorElement: 'div',
        rules: {
            name: "required",
            email: {
                required: true,
                email: true
            },
            photo: {
                required: true
            },
            cv: {
                required: true,
                extension: "pdf|doc|docx"
            }
        },
        messages: {
            name: "Please fill in your name",
            photo: "Select your image file",
            cv: "Please upload your CV in PDF format",
            email: {
                required: "Please fill in your email address",
                email: "A valid email address should look like this: name@domain.com"
            },

        },
        submitHandler: function(form) {
            form.submit();
        }
    });

});

这是我的 HTML 代码:

<form action="submit.php" method="POST" class="form-set" id="MyForm" enctype="multipart/form-data" novalidate="novalidate" >
    <fieldset>
        <legend>Your Profile</legend>
        <label class="control-label" for="cname">Name</label>
        <div class="controls">
            <input type="text" id="cname" name="name"/>
        </div>
        <label class="control-label" for="cemail">Email</label>
        <div class="controls">
            <input type="text" id="cemail" name="email"/>
        </div>
        <label class="control-label" for="cphoto">Photo</label>
        <div class="controls">
            <input type="file" id="cphoto" name="photo">
        </div>
        <label class="control-label" for="ccv">CV</label>
        <div class="controls">
            <input type="file" name="cv" id="ccv">
        </div>
    </fieldset>
</form>

有人可以指出我,在哪里看?

1 个答案:

答案 0 :(得分:1)

两件事:

最可能的问题是您没有从jQuery Validate包中包含文件additional-methods.js。这就是extension方法存在的地方。

其次,这只是偏好,但如果您在submitHandler中所做的只是提交表单,则根本不需要它 - 只需删除该选项并自动执行提交。

我创建了一个代码的工作示例,即使您正确填写了两个文件对话框,它也正确地要求您的名字。 http://jsfiddle.net/ryleyb/C5k7z/