【问题标题】:Javascript Form Submission After Validation验证后提交 Javascript 表单
【发布时间】:2012-05-30 02:37:55
【问题描述】:

这个脚本的功能主要是我想要的:当一个单选复选框没有被选中时发出警报。但是,如果选择了所有按钮,我需要它提交的表单......这就是我挂断电话的地方。现在,如果选择了所有字段和按钮,那么我仍然会收到带有 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 语句中有一个语法错误,看起来像是一个额外的括号。另外,您知道i 是全局的,您可能想在某个地方定义它。

标签: javascript html validation


【解决方案1】:

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

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

【讨论】:

  • +1 return 语句会阻止其后出现的任何其他代码运行。
【解决方案2】:

无论您的验证如何,您都会返回 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 的最终值长度。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:
      var alertMsg = "";
      
      //....
      
      if(alertMsg) {
          alert("Please Choose a:" + alertMsg);
      } else {
          document.forms["form"].submit();
      }
      

      请在每条语句中添加;

      【讨论】:

      • alertMsg 以“请选择一个:”开头,那么它什么时候会评估为假?
      • xdazz,我不清楚这有什么帮助。你能澄清一下吗? (分号除外 ;) 同意 100%)
      猜你喜欢
      • 2015-12-01
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多