我正在使用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>
有人可以指出我,在哪里看?
答案 0 :(得分:1)
两件事:
最可能的问题是您没有从jQuery Validate包中包含文件additional-methods.js
。这就是extension
方法存在的地方。
其次,这只是偏好,但如果您在submitHandler
中所做的只是提交表单,则根本不需要它 - 只需删除该选项并自动执行提交。
我创建了一个代码的工作示例,即使您正确填写了两个文件对话框,它也正确地要求您的名字。 http://jsfiddle.net/ryleyb/C5k7z/