我有一个表单,其中有4个按钮,其类型提交,每个提交点击Action
中的不同Controller
。对于每个按钮单击,我需要验证不同的输入,因此我对按钮具有click
事件,具有相同的class
,如下所示:
$('.store-action').click(function (e) {
var ignoreValidationElements = [],
id = $(this).attr("id"),
name = $(this).attr("name"),
action,
serialNumber = $('#serial').val(),
param;
switch (id) {
case "submit-all":
action = submitUrl;
ignoreValidationElements.length = 0;
if ($('#collapsTwo').is(':visible')) {
$('#collapsTwo input').each(function (index, element) {
var innerId = $(element).attr("id");
ignoreValidationElements.push(innerId);
});
} else {
ignoreValidationElements.push("serial");
}
break;
case "add-item":
action = addItemUrl;
ignoreValidationElements.length = 0;
ignoreValidationElements.push("cID");
ignoreValidationElements.push("cAdd");
ignoreValidationElements.push("cNum");
ignoreValidationElements.push("cEmail");
break;
case "save-all":
action = saveUrl;
ignoreValidationElements.length = 0;
ignoreValidationElements.push("cID");
ignoreValidationElements.push("cAdd");
ignoreValidationElements.push("cNumer");
ignoreValidationElements.push("cEmail");
if ($('#collapsTwo').is(':visible')) {
$('#collapsTwo input').each(function (index, element) {
var innerId = $(element).attr("id");
ignoreValidationElements.push(innerId);
});
} else {
ignoreValidationElements.push("serial");
}
break;
case "cancel":
action = cancelUrl;
ignoreValidationElements.length = 0;
ignoreValidationElements.push("cID");
ignoreValidationElements.push("cAdd");
ignoreValidationElements.push("cNumb");
ignoreValidationElements.push("cEmail");
if ($('#collapsTwo').is(':visible')) {
$('#collapsTwo input').each(function (index, element) {
var innerId = $(element).attr("id");
ignoreValidationElements.push(innerId);
});
} else {
ignoreValidationElements.push("serial");
}
break;
}
我想要实现的是向array
ignoreValidationElements
添加项目,然后我可以忽略表单提交上的验证。
如果单击#submit-all
,则我只想忽略表单的下半部分。如果点击save-all
或cancel
,我想忽略整个表单验证。如果单击add-item
,那么我想忽略表单验证的上半部分。正如您所看到的,我一遍又一遍地编写相同的代码。我的问题是,如何为这种情况编写最小代码?
答案 0 :(得分:1)
试试这个:
/development