防止在验证失败时提交 jQuery 表单
prevent jQuery form submit if validation fail
嗨,当验证在各种输入之一上失败时,我正在尝试阻止此 AJAX 提交表单函数。
编辑:我想知道的确切是我需要包含在//Adult age validation 和 var handleFormSubmit 中以停止 saveForm($('#quotecriteria_form')); 和 performAjaxSubmit(formData, url); 从发生。
提交功能:
var handleFormSubmit = function( e ) {
e.preventDefault();
var $submit = $('button[type="submit"]');
$submit.addClass('loading');
// Save the contents of the form to session cookie
saveForm($('#quotecriteria_form'));
var formData = $('#quotecriteria_form').serialize();
var url = $('#quotecriteria_form').attr('action');
performAjaxSubmit(formData, url);
}
验证函数已初始化:
IndexPageFunctions = {
init: function() {
//Validate date range
this.validateToDate();
this.validateFromDate();
//Validate adult age
this.validateAdultAge0();
this.validateAdultAge1();
this.validateAdultAge2();
this.validateAdultAge3();
//Validate child age
this.validateChildAge0();
this.validateChildAge1();
this.validateChildAge2();
this.validateChildAge3();
this.validateChildAge4();
this.validateChildAge5();
this.validateChildAge6();
this.validateChildAge7();
this.validateChildAge8();
},
众多验证功能之一:
//Adult age validation
validateAdultAge0: function() {
$('button[type="submit"]').on('click', function() {
var inputVal = parseInt( $("input[name='adultAges[0]']").val());
if (inputVal < 18) {
$("input[name='adultAges[0]']").css("border-color","red");
$("div#under18").addClass('show').removeClass('hidden');
}
});
},
在所有函数的作用域之外定义一个布尔数组,每个输入元素都有一个索引:
var valid = [false,false,false...];
如果空白输入应被视为无效,则将原始值设置为 false;如果字段是可选的,则将原始值设置为 true。在每个验证处理程序(如 validateAdultAge0)中,相应地更改相应的标志。例如,如果您决定将 age0 的有效性映射到第 0 个索引,则:
if (inputVal < 18) {
$("input[name='adultAges[0]']").css("border-color","red");
$("div#under18").addClass('show').removeClass('hidden');
valid[0] = false;
}else{
valid[0] = true;
}
就像评论中有人指出的那样,如果这些函数中的每一个的逻辑都相同,您应该使用参数来指定目标输入,而不是创建一个全新的函数,但我不会在这里讨论。
在handleFormSubmit中,你只需要检查有效数组中的所有标志是否都设置为true,如果任何一个是假的,你可以返回:
for(var i=0;i<valid.length;i++){
if(!valid[i]){
return;
}
}
相关文章:
- Don't提交jquery后重新加载
- 添加代码以防止重复提交 JQuery 后提交不起作用
- 防止在验证失败时提交 jQuery 表单
- 提交 jquery 后删除表单 (JSP&Servlet)
- 无法在 Meteor 中提交 JQuery 日期选取器值
- 未提交 JQuery 验证的表单
- 加载HighCharts图表/数据在表单上提交jQuery
- 如果电子邮件输入处于焦点上,则阻止输入按钮表单提交 (jquery)
- preventDefault() 停止提交 jquery 表单值
- 提交 JQuery 表单 $.post() 处理成功时的显示消息
- 如何创建AngularJS指令以在按下回车按钮时提交jquery对话框
- 提交jquery后清除表单数据
- 在CodeIgniter中使用Bootstrap提交jQuery表单
- 防止表单被提交- jquery
- 显示和隐藏表与过滤后的内容提交(jQuery)
- 表单自动提交jquery
- 向服务器提交Jquery按钮的值
- submit函数在第一次提交jquery之后提交两次,PHP
- 防止hubspot表单提交- jQuery验证
- 如何防止表单提交 JQuery