这是我的jQuery代码段
$("#saveBankDetails").click(function(){ if($('#firstBankDetail').is(':visible')) { return validateFirstBankDetails(); } if($('#secondBankDetail').is(':visible')) { return validateSecondBankDetails(); } if($('#thirdBankDetail').is(':visible')) { return validateThirdBankDetails(); } if($('#fourthBankDetail').is(':visible')) { return validateFourthBankDetails(); } });
如果元素firstBankDetail,secondBankDetail等可见,我想要实现的是执行validation。 validateFirstBankDetails
, validateSecondBankDetails
都是javascript函数。
我已经使用return来避免在validation失败时将数据发布到服务器。 但是,如果validateFirstBankDetails()返回true,那么似乎会发布数据,因此代码不会向前移动。 我需要做哪些修改才能使代码向前推进并对secondBankDetail应用validation?
将结果收集到单个变量:
$("#saveBankDetails").click(function(){ var restult = true; if($('#firstBankDetail').is(':visible')) { result &= validateFirstBankDetails(); } if($('#secondBankDetail').is(':visible')) { result &= validateSecondBankDetails(); } if($('#thirdBankDetail').is(':visible')) { result &= validateThirdBankDetails(); } if($('#fourthBankDetail').is(':visible')) { result &= validateFourthBankDetails(); } return result; });
在这种情况下,如果至少一次validation失败 – 整个表单validation将失败。
PS更好地订阅form
提交事件并在那里处理validation: 防止表单上的默认值提交jQuery
如果validation失败
return false
将其添加到click事件的末尾。
给这些元素一个class
,然后循环它们:
$("#saveBankDetails").click(function(){ var all_elements = $('.newClass'); all_elements.each(function () { if (!$(this).is(':visible')) { //do something if not visible return false; } }); });
你也可以试试这个
$("#saveBankDetails").click(function(){ var result = false; if($('#firstBankDetail').is(':visible')) { result = validateFirstBankDetails(); } if($('#secondBankDetail').is(':visible')) { result = validateSecondBankDetails(); } if($('#thirdBankDetail').is(':visible')) { result = validateThirdBankDetails(); } if($('#fourthBankDetail').is(':visible')) { result = validateFourthBankDetails(); } return result; });
按照@Samich的建议,我想出了这个解决方案。 它工作正常。
$('form').submit(function (event) { if($('#firstBankDetail').is(':visible')) { if(!validateFirstBankDetails()){ event.preventDefault(); } } if($('#secondBankDetail').is(':visible')) { if(!validateSecondBankDetails()){ event.preventDefault(); } } if($('#thirdBankDetail').is(':visible')) { if(!validateThirdBankDetails()){ event.preventDefault(); } } if($('#fourthBankDetail').is(':visible')) { if(!validateFourthBankDetails()){ event.preventDefault(); } } });
它也更容易
$("#saveBankDetails").click(function(){ if($('#firstBankDetail').is(':visible')) { return validateFirstBankDetails(); } if($('#secondBankDetail').is(':visible')) { return validateSecondBankDetails(); } if($('#thirdBankDetail').is(':visible')) { return validateThirdBankDetails(); } if($('#fourthBankDetail').is(':visible')) { return validateFourthBankDetails(); } return false; });
如果您不想将控制权返回给服务器,则可以添加return false;
$("#saveBankDetails").click(function(){ var result = 0; var visible = 0; if($('#firstBankDetail').is(':visible')) { result = result + ( 1 & validateFirstBankDetails()); visible++; } if($('#secondBankDetail').is(':visible')) { result = result + ( 1 & validateFirstBankDetails()); visible++; } if($('#thirdBankDetail').is(':visible')) { result = result + ( 1 & validateFirstBankDetails()); visible++; } if($('#fourthBankDetail').is(':visible')) { result = result + ( 1 & validateFirstBankDetails()); visible++; } if(result == visible) {return true;} else{return false;} });
以上就是jQuery教程分享成功validation后,jQuery将数据发布到服务器相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/jquerytutorial/558654.html