检查表单的数值或空字符串

时间:2014-04-08 18:17:56

标签: javascript html regex forms

我有javascript来检查HTML表单的数值和空字符串。如果输入任何其他内容(符号,字母等),则表单不应提交,并且应弹出错误消息。到目前为止,表格无论如何都会提交。我正在尝试设置它,以便如果3个字段中的任何一个具有不正确的值,则它不会提交。示例:输入“5”,然后输入“a”,然后输入“5”(或类似输入的任意组合)不起作用。而“5”则“”然后“5”或“”然后“”然后“”或“5”“5”“5”......等应该。

JAVASCRIPT FUNCTION

  function validateOrder()
                {
                    var myOrderRegex = /^(\s*|\d+)$/

                if(myOrderRegex.test(document.getElementById("appleorderquantity").value))
                {
                    return true;
                }
                else
                {
                    alert("Apple quantity invalid: must be numeric");
                    return false;
                }
                if(myOrderRegex.test(document.getElementById("grapeorderquantity").value))
                {
                    return true;
                }
                else
                {
                    alert("Apple quantity invalid: must be numeric");
                    return false;
                }
                if(myOrderRegex.test(document.getElementById("strbryorderquantity").value))
                {
                    return true;
                }
                else
                {
                    alert("Apple quantity invalid: must be numeric");
                    return false;
                }
            }

HTML FOR ENTRY TEXTBOXES

<input type="text" name="Apple_Quantity" id="appleorderquantity" size="25" />
<input type="text" name="Grape_Quantity" id="grapeorderquantity" size="25" />
<input type="text" name="Strawberry_Quantity" id="strbryorderquantity" size="25" />

用于提交按钮的HTML

<input type="submit" value="Submit" onClick="return validateOrder()" />

1 个答案:

答案 0 :(得分:1)

在函数结束之前不要返回true - 检查不应提交的任何条件,如果满足任何条件,则返回false,否则,在检查完所有后,返回true

另外,你最好不要做

<form onsubmit="return validateOrder()">
     ...
</form>

如果validateOrder()返回false,则表单不会提交。

 function validateOrder()
 {
     var myOrderRegex = /^(\s*|\d+)$/

      if(!myOrderRegex.test(document.getElementById("appleorderquantity").value))
            alert("Apple quantity invalid: must be numeric");
            return false;
       }
       if(!myOrderRegex.test(document.getElementById("grapeorderquantity").value))
          alert("Apple quantity invalid: must be numeric");
          return false;
       }
       if(!myOrderRegex.test(document.getElementById("strbryorderquantity").value))
           alert("Apple quantity invalid: must be numeric");
           return false;
       }

       return true;
    }