JavaScript-仅验证数值且在范围内

JavaScript-仅验证数值且在范围内,javascript,forms,validation,Javascript,Forms,Validation,我有一个asp表单,它有许多字段。在提交时,我想使用javascript检查勾选框是否已选中,以及“金额”字段是否在给定范围内且仅包含数字。我正在努力让它一气呵成地检查所有三项功能——目前我有以下几点: <script type="text/javascript"> function validateForm() { var x=document.forms["myForm"]["Amount"].value; if (x<5 || x >250) { alert

我有一个asp表单,它有许多字段。在提交时,我想使用javascript检查勾选框是否已选中,以及“金额”字段是否在给定范围内且仅包含数字。我正在努力让它一气呵成地检查所有三项功能——目前我有以下几点:

<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>

函数validateForm()
{
var x=document.forms[“myForm”][“Amount”]。值;
如果(x250)
{
警报(“请填写所有必填字段-您希望保存的金额”);
返回false;
}
else if(myForm.agreesubmit.checked==false)
{
警惕(“您必须同意条款和条件”);
返回false;
} 
}
目前,这是对勾选框选择和范围的两个单独检查

任何想法都值得欣赏。

尝试使用isNan()。教程位于

比如:

if (isNaN(x) || x < 5 || x > 250))
{
    alert("Please complete all required fields - Amount you wish to save");
    return false;
}
if(isNaN(x)| x<5 | x>250))
{
警报(“请填写所有必填字段-您希望保存的金额”);
返回false;
}
快速注意:您可能会对or/and感到困惑,因此请注意x250被包装在()中,以便它可以与and和数字条件配合使用。然后,最后整个if包装语句。

尝试使用isNan()。教程位于

比如:

if (isNaN(x) || x < 5 || x > 250))
{
    alert("Please complete all required fields - Amount you wish to save");
    return false;
}
if(isNaN(x)| x<5 | x>250))
{
警报(“请填写所有必填字段-您希望保存的金额”);
返回false;
}

快速注意:您可能会对or/and感到困惑,因此请注意x250被包装在()中,以便它可以与and和数字条件配合使用。然后,最后整个if包装语句。

这将确保它首先只包含数字,然后根据范围检查数字

<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>

函数validateForm()
{
var x=document.forms[“myForm”][“Amount”]。值;
if(String(x).search(/^\s*(\+\124;-)?(\ d+(\.\d+))|(\.\d+)))\s*$/)!=1
&&(x250))
{
警报(“请填写所有必填字段-您希望保存的金额”);
返回false;
}
else if(myForm.agreesubmit.checked==false)
{
警惕(“您必须同意条款和条件”);
返回false;
} 
}

通过

这将确保它首先只包含数字,然后根据范围检查数字

<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>

函数validateForm()
{
var x=document.forms[“myForm”][“Amount”]。值;
if(String(x).search(/^\s*(\+\124;-)?(\ d+(\.\d+))|(\.\d+)))\s*$/)!=1
&&(x250))
{
警报(“请填写所有必填字段-您希望保存的金额”);
返回false;
}
else if(myForm.agreesubmit.checked==false)
{
警惕(“您必须同意条款和条件”);
返回false;
} 
}

通过

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

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

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

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


为什么你希望所有的一切都在一个声明中?你在检查两种不同的东西,有两种不同的回答。如果陈述恰当,则似乎是2。可能无效输入会有不同的预期警报响应。因此,您可能需要对3个响应进行3次单独检查。以下是有关数字验证的一些想法:在同一个函数体中,您同时使用
document.forms[“myForm”]
myForm
引用相同的表单元素。这是不一致的,而且这两者之间的稳健性也不同。您应该始终使用更可靠的形式。它可以是单独的语句,我只是无法让它正确地同时使用它们以及在amoutn字段上进行两次检查。为什么您希望所有语句都包含在一个语句中?你在检查两种不同的东西,有两种不同的回答。如果陈述恰当,则似乎是2。可能无效输入会有不同的预期警报响应。因此,您可能需要对3个响应进行3次单独检查。以下是有关数字验证的一些想法:在同一个函数体中,您同时使用
document.forms[“myForm”]
myForm
引用相同的表单元素。这是不一致的,而且这两者之间的稳健性也不同。你应该始终如一地使用更可靠的形式。它可以是独立的语句,我只是不能让它正确地使用它们,并且在amoutn字段上进行两次检查。isNaN是我所发现的最好的解决方案,不是吗?
| isNaN(x)
?使用
&&
仅当它是数字而非数字时才为真。@Dylan“在给定范围内且只有数字”
isNaN
检查它是否为“非数字”
(x250)和&isNaN(x)
永远不会返回true。我想编辑代码段并添加以下描述:在
x<5|x>250)之前添加缺少的左括号。但我收到了这样一条错误消息:“编辑必须至少6个字符;这篇文章还有其他需要改进的地方吗?”isNaN是我所发现的最好的解决方案,不是吗?
| isNaN(x)
?使用
&&
仅当它是数字而非数字时才为真。@Dylan“在给定范围内且只有数字”
isNaN
检查它是否为“非数字”
(x250)和&isNaN(x)
永远不会返回true。我想编辑代码段并添加以下描述:在
x<5|x>250)之前添加缺少的左括号。但是我收到了一条错误消息:“编辑必须至少6个字符;这篇文章还有什么需要改进的吗?”作为后续,amount字段将允许逗号和句号,有没有一种方法我可以说不允许这些,所以只允许整数?将
parseFloat(str)
更改为
parseInt(str)
,作为后续操作,amount字段将允许逗号和句号,有没有一种方法我可以说不允许这些,所以只允许整数?将
parseFloat(str)
更改为
parseInt(str)