在不同按钮上验证不同类型的单击

时间:2017-02-02 12:33:48

标签: javascript jquery html forms validation

我有一个表单,其中有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-allcancel,我想忽略整个表单验证。如果单击add-item,那么我想忽略表单验证的上半部分。正如您所看到的,我一遍又一遍地编写相同的代码。我的问题是,如何为这种情况编写最小代码?

1 个答案:

答案 0 :(得分:1)

试试这个:

/development