发送ajax请求前的jQuery验证
我有一个表单,允许用户编辑SMTP信息。所有必填字段都有class=“required”。表单有两个按钮发送ajax请求前的jQuery验证,jquery,jquery-validate,Jquery,Jquery Validate,我有一个表单,允许用户编辑SMTP信息。所有必填字段都有class=“required”。表单有两个按钮 拯救 试验 1)保存 当用户单击save按钮时,jQuery验证程序检查所有必填字段是否都有某些内容(class=“required”),然后以正常方式提交表单。这正如预期的那样有效 2)测试 当用户单击test按钮时,我使用$.getJSON来确定输入的信息是否有效。但是,在发送ajax请求之前,没有进行任何验证。我希望此按钮需要相同的字段 我如何才能做到这一点? 问题似乎是,按照我的设置
$(document).ready(function(){
$('#testEmailProfile').click(function() {
var map = {
m: 'testEmailProfile',
smtpHostname: $('#smtpHostname').val(),
smtpPort: $('#smtpPort').val(),
smtpUsername: $('#smtpUsername').val(),
smtpPassword: $('#smtpPassword').val(),
}
$.getJSON('ajax.php', map, function(data) {
if (data.success) {
//Works
} else {
//Doesn't work
}
});
return false;
});
$("#emailProfileForm").validate();
});
$(“#emailProfileForm”).validate()的位置;这是错误的。在发送ajax请求之前,应该调用验证函数
$(document).ready(function(){
$('#testEmailProfile').click(function() {
if($("#emailProfileForm").validate()) {
var map = {
m: 'testEmailProfile',
smtpHostname: $('#smtpHostname').val(),
smtpPort: $('#smtpPort').val(),
smtpUsername: $('#smtpUsername').val(),
smtpPassword: $('#smtpPassword').val(),
}
$.getJSON('ajax.php', map, function(data) {
if (data.success) {
//Works
} else {
//Doesn't work
}
});
} else {
return false;
}
});
});
如果您使用的是jquery form validator pludgin,请阅读更多信息。我将表单拆分为两个单独的表单,然后执行以下操作:
$("#emailProfileForm").validate();
$("#testEmailProfileForm").validate({
submitHandler: function() {
var map = {
m: 'testEmailProfile',
smtpHostname: $('#smtpHostname').val(),
smtpPort: $('#smtpPort').val(),
smtpUsername: $('#smtpUsername').val(),
smtpPassword: $('#smtpPassword').val(),
}
$.getJSON('ajax.php', map, function(data) {
if (data.success) {
//Success
} else {
//Not success
}
});
}
});
可能不是最佳解决方案…Jquery验证程序为此提供提交处理程序
$(".selector").validate({
submitHandler: function(form) {
$(form).ajaxSubmit();
}
});
因此,您可以在submitHandler函数中包含所有代码。这将在验证结果成功后执行