验证后提交 Javascript 表单

Javascript Form Submission After Validation

本文关键字:表单 Javascript 提交 验证      更新时间:2023-09-26

这个脚本的功能主要是我希望它:未选中单选复选框时发出警报。但是,如果选择了所有按钮,我需要提交表格...这就是我挂断电话的地方。现在,如果选择了所有字段和按钮,那么我仍然会收到带有var alertMsg的警报。有什么想法吗?

function submitform() {
    var sizeChoice = ""
    var size = document.store.on1.length
    var fontChoice = ""
    var len = document.store.on2.length
    var materialChoice = ""
    var material = document.store.on3.length
    var treatmentChoice = ""
    var treatment = document.store.on4.length
    var a = document.forms["store"]["item_name"].value;
    var alertMsg = "Please Choose a:"
    for(i = 0; i < size; i++) {
        if(document.store.on1[i].checked) {
            sizeChoice = document.store.on1[i].value
        }
    }
    for(i = 0; i < len; i++) {
        if(document.store.on2[i].checked) {
            fontChoice = document.store.on2[i].value
        }
    }
    for(i = 0; i < material; i++) {
        if(document.store.on3[i].checked) {
            materialChoice = document.store.on3[i].value
        }
    }
    for(i = 0; i < treatment; i++) {
        if(document.store.on4[i].checked) {
            treatmentChoice = document.store.on4[i].value
        }
    }
    if(a == null || a == "") alertMsg += "'n" + "Name" + "'n";
    if(sizeChoice == "") {
        alertMsg += "Size" + "'n"
    }
    if(fontChoice == "") {
        alertMsg += "Font" + "'n"
    }
    if(materialChoice == "") {
        alertMsg += "Material" + "'n"
    }
    if(treatmentChoice == "") {
        alertMsg += "Treatment" + "'n"
    } {
        alert(alertMsg)
    };
    return false;
    document.forms["form"].submit();
};

在提交表单之前,您有退货。这可能是问题的一部分。

此外,您在最终的 if 语句中缺少 else。

无论您的验证如何,您都会返回 false。将代码的结尾从:

if(treatmentChoice == "") {
    alertMsg += "Treatment" + "'n"
} {
      alert(alertMsg)
};
return false;
document.forms["form"].submit();

自:

if(treatmentChoice == "") {
    alertMsg += "Treatment" + "'n"
}
if(alertMsg.length > 16) {
    alert(alertMsg);
    return false;
} else {
    document.forms["form"].submit();
}

长度检查会根据最初设置的 alertMsg 的最终值长度进行检查。

您在表单提交行之前返回,因此永远不会被调用。

var alertMsg = "";
//....
if(alertMsg) {
    alert("Please Choose a:" + alertMsg);
} else {
    document.forms["form"].submit();
}

请在每条陈述中添加;