JavaScript - 仅在范围内验证数字

时间:2012-08-21 21:08:16

标签: javascript forms validation

我有一个包含许多字段的asp表单。在提交时,我想检查,使用javascript选择了一个复选框,并且在给定范围内的“金额”字段仅包含数字。我正努力让它一次性检查所有三个 - 在mometn我有以下内容:

<script type="text/javascript">
function validateForm()
{
var x=document.forms["myForm"]["Amount"].value;
if (x<5 || x >250)
  {
  alert("Please complete all required fields - Amount you wish to save");
  return false;
  }

else if ( myForm.agreesubmit.checked == false )
  {
  alert ( "You Must Agree To The Terms and Conditions" );
  return false;
  } 

}
</script>

目前,这是两个单独检查勾选框选择和范围。

任何想法都赞赏。

3 个答案:

答案 0 :(得分:2)

尝试使用isNan()。在http://www.w3schools.com/jsref/jsref_isnan.asp

上找到了教程

类似的东西:

if (isNaN(x) || x < 5 || x > 250))
{
    alert("Please complete all required fields - Amount you wish to save");
    return false;
}

快速注意您可能对or / ands感到困惑,所以请注意x&lt; 5 || x> 250被包装在()中,以便它可以与数字条件合作。然后,最后整个if包装语句。

答案 1 :(得分:2)

创建一个可以执行此操作的函数:

function validate(str, chk, min, max) {
  n = parseFloat(str);
  return (chk && !isNaN(n) && n >= min && n <= max);
}

然后这样称呼它:

function validateForm()
{
  if(!validate(document.forms["myForm"]["Amount"].value, 
     document.forms["myForm"]["agreesubmit"].checked, 5, 250)) {
    alert("Please complete all required fields - Amount you wish to save");
    return false;
  }
}

答案 2 :(得分:0)

这将确保它只有数字,然后检查数字与范围。

<script type="text/javascript">
function validateForm()
{
var x=document.forms["myForm"]["Amount"].value;
if( String(x).search(/^\s*(\+|-)?((\d+(\.\d+)?)|(\.\d+))\s*$/) != -1
&&( x<5 || x >250 ))
  {
  alert("Please complete all required fields - Amount you wish to save");
  return false;
  }

else if ( myForm.agreesubmit.checked == false )
  {
  alert ( "You Must Agree To The Terms and Conditions" );
  return false;
  } 

}
</script>

通过http://ntt.cc/2008/05/10/over-10-useful-javascript-regular-expression-functions-to-improve-your-web-applications-efficiency.html