验证提交表单 ajax post
Make a validation for a submit form ajax post
使用以下代码,我使用下面的表单将图像上传到我的服务器
<form id="form" method="POST">
<input name="image" type="file" />
<br/>
<input type="submit" />
</form>
并使用以下 .js 代码
$("#form").submit(function(e) {
var formData = new FormData($(this)[0]);
$.ajax({
url: "uploadimage.php",
type: "POST",
data: formData,
async: false,
cache: false,
contentType: false,
processData: false
});
return false
});
但我需要在您提交表单之前制定规则,因此我需要使用验证。
示例:
$("#form").validate({
submitHandler: function(form) {
$("#form").submit(function(e) {
var formData = new FormData($(this)[0]);
$.ajax({
url: "uploadimage.php",
type: "POST",
data: formData,
async: false,
cache: false,
contentType: false,
processData: false
});
return false
});
},rules: {
image: "required"
},
messages: {
image: "image is required"
}
});
但此代码不起作用
"but this code does not work"
那是因为您在插件的 submitHandler
...
中放置了一个 .submit()
处理程序
submitHandler: function(form) {
$("#form").submit(function(e) { ....
插件的 submitHandler
已经正确处理了默认的 submit
事件,仅在表单有效时触发按钮点击。
通过将另一个 .submit()
处理程序放入其中,它永远不会触发,因为表单的唯一提交事件已经发生。
删除额外的 .submit()
处理程序
submitHandler: function (form) {
$.ajax({
// your options
});
return false;
},
验证演示:http://jsfiddle.net/8tebdxn4/
此外,如果您想上传文件,您需要在 <form>
标签上使用正确的 enctype
属性...
<form id="form" method="POST" enctype="multipart/form-data">
使用以下代码,我使用下面的表单将图像上传到我的服务器
<form id="form" method="POST">
<input name="image" type="file" />
<br/>
<input type="submit" />
</form>
并使用以下 .js 代码
$("#form").submit(function(e) {
var formData = new FormData($(this)[0]);
$.ajax({
url: "uploadimage.php",
type: "POST",
data: formData,
async: false,
cache: false,
contentType: false,
processData: false
});
return false
});
但我需要在您提交表单之前制定规则,因此我需要使用验证。
示例:
$("#form").validate({
submitHandler: function(form) {
$("#form").submit(function(e) {
var formData = new FormData($(this)[0]);
$.ajax({
url: "uploadimage.php",
type: "POST",
data: formData,
async: false,
cache: false,
contentType: false,
processData: false
});
return false
});
},rules: {
image: "required"
},
messages: {
image: "image is required"
}
});
但此代码不起作用
"but this code does not work"
那是因为您在插件的 submitHandler
...
.submit()
处理程序
submitHandler: function(form) {
$("#form").submit(function(e) { ....
插件的 submitHandler
已经正确处理了默认的 submit
事件,仅在表单有效时触发按钮点击。
通过将另一个 .submit()
处理程序放入其中,它永远不会触发,因为表单的唯一提交事件已经发生。
删除额外的 .submit()
处理程序
submitHandler: function (form) {
$.ajax({
// your options
});
return false;
},
验证演示:http://jsfiddle.net/8tebdxn4/
此外,如果您想上传文件,您需要在 <form>
标签上使用正确的 enctype
属性...
<form id="form" method="POST" enctype="multipart/form-data">