jquery验证问题
我有一个表格,它是一个excel电子表格,有650个字段。我需要验证两个必填字段。另外,我想通过在第一次单击时隐藏“保存”按钮来防止多个表单提交 我有以下资料:jquery验证问题,jquery,validation,Jquery,Validation,我有一个表格,它是一个excel电子表格,有650个字段。我需要验证两个必填字段。另外,我想通过在第一次单击时隐藏“保存”按钮来防止多个表单提交 我有以下资料: $('#btnSave').click(function() { $('#formSub').hide(); $('#bidForm').validate({ rules: { vendorName: { required:t
$('#btnSave').click(function() {
$('#formSub').hide();
$('#bidForm').validate({
rules: {
vendorName: { required:true }
},
messages: {
vendorName: "Vendor Name is required!"
}
}).form();
if ($("#bidForm").valid()) {
$("#formSub").html('<table style="font-size:11px;"><tr><td><img src="images/ajax-loader.gif" border="0"></td><td> Saving! Please wait...</td></tr></table>');
var options = {
success:function() {
$("#formSub").html('<input type="button" name="btnBFGoBack" id="btnBFGoBack" class="submitButton btnGoBack" value="Go Back" style="float:left; margin-right:20px;" /><input type="button" name="btnSave" id="btnSave" class="submitButton save" value="Save" style="float:right;" />');
},
url:'saveForm.cfm'
};
$("#bidForm").ajaxSubmit(options);
return false;
}
});
$('#btnSave')。单击(函数(){
$('#formSub').hide();
$(“#bidForm”)。验证({
规则:{
vendorName:{必需:true}
},
信息:{
vendorName:“需要供应商名称!”
}
}).form();
如果($(“#bidForm”).valid()){
$(“#formSub”).html(‘正在保存!请稍候……’);
变量选项={
成功:函数(){
$(“#formSub”).html(“”);
},
url:'saveForm.cfm'
};
$(“#投标格式”).ajaxSubmit(选项);
返回false;
}
});
我有两个问题
$(“#formSub”).html('正在保存!请稍候…'); 不会立即触发
由于表单中有这么多字段,validate()是否有问题?如何确保“保存”按钮被隐藏、验证两个字段并再次显示“保存”按钮 您不应该在单击事件之后调用validate,但在加载页面并使用submitHandler发送ajax请求之后:
$(document).ready(function(){
$('#bidForm').validate({
rules: {
vendorName: { required:true }
},
messages: {
vendorName: "Vendor Name is required!"
},
submitHandler: function(form) {
// handler body
}
});
});
没有测试用例很难猜测。设置验证操作页面加载,而不是在提交处理程序上。还通过附加提交处理程序。对于你正在做的事情来说,似乎还有很长一段时间。也许在validate js文件中调试一下,确保它没有循环表单中的所有字段
$(function(){ // ready
$('#bidForm').validate({/*options*/
submitHandler: function(form){
//send ajax here
}
});
})
当我有600多个formfield并且只需要验证1或2个字段时,使用验证插件是不实际的。因此:
$('#btnSave').click(function() {
if ( $('#vendorName').val() == '') {
$('#vendorErr').html('Please pick a vendor!');
} else {
$("#formSub").html('<table style="font-size:11px;"><tr><td><img src="images/ajax-loader.gif" border="0"></td><td> Saving! Please wait...</td></tr></table>');
var options = {
success:function() {
$("#formSub").html('<input type="button" name="btnBFGoBack" id="btnBFGoBack" class="submitButton btnGoBack" value="Go Back" style="float:left; margin-right:20px;" onclick="goBack();" /><input type="button" name="btnSave" id="btnSave" class="submitButton save" value="Save" style="float:right;" />');
},
url:'saveForm.cfm'
};
$("#bidForm").ajaxSubmit(options);
}
});
$('#btnSave')。单击(函数(){
if($('#vendorName').val()=''){
$('#vendorErr').html('请选择一个供应商!');
}否则{
$(“#formSub”).html(‘正在保存!请稍候……’);
变量选项={
成功:函数(){
$(“#formSub”).html(“”);
},
url:'saveForm.cfm'
};
$(“#投标格式”).ajaxSubmit(选项);
}
});
如果您有很多字段,并且只想使用validate插件验证2个字段,则可以添加一个“ignore”类,告诉validate插件不应验证特定字段。这将加快进程,您仍然可以使用所有其他漂亮的validate插件功能。我通过在按钮上添加onclick=“goBack();”解决了第二个问题。我仍然很好奇为什么click()事件没有第二次触发。1。将“saving!please wait”消息移动到valid()调用之前?这种方法的问题是我找不到带有validate plugin的beforeSubmit函数。我需要隐藏“保存”按钮,这样人们就不会一直点击它了。@FALCONSEYE-验证不是需要时间的部分。这是ajax请求。这是您应该禁用按钮的地方。正如您所说,在submit handler.js中,我认为validate.js正在表单字段中循环。如果我删除validate并为$('#vendorName').val()=''添加一个简单的if语句,它根本不会等待。根据firebug,ajax请求只需要81毫秒。一定是650多个字段减慢了速度。您是否可以将您试图验证的两个字段以各自的形式包装起来?您可以将这些值复制到其他形式的隐藏字段中。或者像$('#vendorName').val()那样手动验证