Javascript函数不显示警报框

Javascript函数不显示警报框,javascript,forms,Javascript,Forms,我有一个javascript项目,我正在工作,获取信息并提交它。我应该验证数量输入中是否只有数字,并弹出一个警告框,如果没有,则不提交。它们可以是空白的,只要它们输入的是数字。我已经验证了它,并且查看了提交页面,它显示如果我以字母形式输入特定数量字段,则不会提交(我有三个数量),但其他所有内容都会提交。如果任何数量不是数字,它应该发出警报并停止页面提交。我已经看了一遍又一遍,尝试了一些事情,但似乎找不到我的错误。如果您能告诉我如何纠正这一点,我将不胜感激 <script> //f

我有一个javascript项目,我正在工作,获取信息并提交它。我应该验证数量输入中是否只有数字,并弹出一个警告框,如果没有,则不提交。它们可以是空白的,只要它们输入的是数字。我已经验证了它,并且查看了提交页面,它显示如果我以字母形式输入特定数量字段,则不会提交(我有三个数量),但其他所有内容都会提交。如果任何数量不是数字,它应该发出警报并停止页面提交。我已经看了一遍又一遍,尝试了一些事情,但似乎找不到我的错误。如果您能告诉我如何纠正这一点,我将不胜感激

<script>
  //function to check for valid fruit quantities
  function certifyDigits() {
    var b = document.getElementById("blueberries").value;
    var c = document.getElementById("cherries").value;
    var s = document.getElementbyId("strawberries").value;
    if (!b.match(/^\d+$/)) {
      alert("Please enter only numbers for quantity!");
      return false;
    }

    if (!c.match(/^\d+$/)) {
      alert("Please enter only numbers for quantity!");
      return false;
    }

    if (!s.match(/^\d+$/)) {
      alert("Please enter only numbers for quantity!");
      return false;
    }

  }
</script>
</head>

<body>

  <h2>Fruit Purchasing Form</h2>

  <table class="main">
    <tr>
      <th class="a">&nbsp;</th>
      <th class="a">Blueberries</th>
      <th class="a">Cherries</th>
      <th class="a">Strawberries</th>
    </tr>
    <tr>
      <th class="a">Price</th>
      <td class="b">$2.50</td>
      <td class="b">$4.40</td>
      <td class="b">$8.00</td>
    </tr>
    <tr>
      <th class="a">Shipping Weight</th>
      <td class="b">2.0</td>
      <td class="b">4.0</td>
      <td class="b">4.0</td>
    </tr>
  </table>
  <br />
  <br />
  <br />
  <br />

  <form name="fruitOrder" action="http://www.textXXX.php" method="post" onSubmit="return certifyDigits()">

    <h3>Select Quantity of Fruit Desired</h3>
    <br />

    <p>Blueberries:</p>
    <input id="blueberries" type="text" size=5>
    <p>Cherries:</p>
    <input id="cherries" type="text" size=5>
    <p>Strawberries:</p>
    <input id="strawberries" type="text" size=5>

    <br />
    <br />

    <h3>Customer Information</h3>
    <br />
    <label>Your Last Name:
      <input type="text" name="lastname" id="lastname" size="25" />
    </label>
    <br />
    <label>Your First Name:
      <input type="text" name="firstname" id="firstname" size="25" />
    </label>
    <br />
    <label>Street Address:
      <input type="text" name="street" id="street" size="60" />
    </label>
    <br />
    <label>City, State, Zip Code:
      <input type="text" name="citystatezip" id="citystatezip" size="60" />
    </label>
    <br />

    <h3>Payment Method</h3>
    <label>Visa
      <input type="radio" name="payment_type" id="payment_type_Visa" value="Visa" checked />
    </label>
    <br />
    <label>Mastercard
      <input type="radio" name="payment_type" id="payment_type_MC" value="MC" />
    </label>
    <br />
    <label>American_Express
      <input type="radio" name="payment_type" id="payment_type_amex" value="amex" />
    </label>
    <br />
    <br />
    <input type="submit" value="SUBMIT" />
  </form>

//用于检查有效水果数量的函数
函数certifyDigits(){
var b=document.getElementById(“蓝莓”).value;
var c=document.getElementById(“cherries”).value;
var s=document.getElementbyId(“草莓”).value;
如果(!b.match(/^\d+$/)){
警告(“请仅输入数量的数字!”);
返回false;
}
如果(!c.match(/^\d+$/)){
警告(“请仅输入数量的数字!”);
返回false;
}
如果(!s.match(/^\d+$/)){
警告(“请仅输入数量的数字!”);
返回false;
}
}
水果购买表格
蓝莓
樱桃
草莓
价格
$2.50
$4.40
$8.00
装运重量
2
4
4




选择所需的水果数量
蓝莓:

樱桃:

草莓:



客户信息
您的姓:
您的名字:
街道地址:
城市、州、邮政编码:
付款方式 签证
万事达卡
美国运通

javascript match()函数始终返回一个数组。如果匹配为true,则数组将包含匹配值。如果匹配为false,则数组将包含空字符串。将if语句更改为

if (b.match(/^\d+$/)[0] === "") {
这应该可以解决问题。

javascript match()函数总是返回一个数组。如果匹配为true,则数组将包含匹配值。如果匹配为false,则数组将包含空字符串。将if语句更改为

if (b.match(/^\d+$/)[0] === "") {

这应该可以解决问题。

为什么不只验证数字输入

function validate_numbers(evt){ 
  var theEvent=evt || window.event; 
  var key=theEvent.keyCode || theEvent.which; 
  key=String.fromCharCode(key); 
  var regex=/[0-9]|\.|\,|\/|\ /;

  if(!regex.test(key)){ 
    theEvent.returnValue=false; 
    if(theEvent.preventDefault)theEvent.preventDefault(); 
  }; 
};

为什么不只验证数字输入

function validate_numbers(evt){ 
  var theEvent=evt || window.event; 
  var key=theEvent.keyCode || theEvent.which; 
  key=String.fromCharCode(key); 
  var regex=/[0-9]|\.|\,|\/|\ /;

  if(!regex.test(key)){ 
    theEvent.returnValue=false; 
    if(theEvent.preventDefault)theEvent.preventDefault(); 
  }; 
};

它应该是:document.getElementById(“草莓”).value

不是:document.getElementbyId(“草莓”).value

您正在对getElementById使用小写字母b,这会导致错误。 要轻松查看此类错误,请启用在chrome上保留日志。在我这边,错误是:uncaughttypeerror:document.getElementbyId不是一个函数

为防止页面错误发送,添加返回false;在函数certifyDigits()中。您还可以设置存储错误数的变量,如果有错误,则返回false

见下文

function certifyDigits(){
    var fruits = ["blueberries", "cherries", "strawberries"];
    var errors_count = 0;

    for(var ctr = 0; ctr < fruits.length; ctr ++){
        if(! document.getElementById(fruits[ctr]).value.match(/^\d+$/)){
            errors_count++;
        }
    }

    if(errors_count > 0){
        alert("Please enter only numbers for quantity!");
        return false;
    }
  }
函数认证数字(){
var水果=[“蓝莓”、“樱桃”、“草莓”];
var错误计数=0;
对于(变量ctr=0;ctr0){
警告(“请仅输入数量的数字!”);
返回false;
}
}

它应该是:document.getElementById(“草莓”).value

不是:document.getElementbyId(“草莓”).value

您正在对getElementById使用小写字母b,这会导致错误。 要轻松查看此类错误,请启用在chrome上保留日志。在我这边,错误是:uncaughttypeerror:document.getElementbyId不是一个函数

为防止页面错误发送,添加返回false;在函数certifyDigits()中。您还可以设置存储错误数的变量,如果有错误,则返回false

见下文

function certifyDigits(){
    var fruits = ["blueberries", "cherries", "strawberries"];
    var errors_count = 0;

    for(var ctr = 0; ctr < fruits.length; ctr ++){
        if(! document.getElementById(fruits[ctr]).value.match(/^\d+$/)){
            errors_count++;
        }
    }

    if(errors_count > 0){
        alert("Please enter only numbers for quantity!");
        return false;
    }
  }
函数认证数字(){
var水果=[“蓝莓”、“樱桃”、“草莓”];
var错误计数=0;
对于(变量ctr=0;ctr0){
警告(“请仅输入数量的数字!”);
返回false;
}
}

根据上下文,您使用的是匹配而不是测试。
要使一切正常工作,请使用
/^\d+$/.test(b)
这将返回True或False,如果其中任何一个输入不正确,您可能需要发出一次警报(而不是三次警报),要执行此操作,请在if语句中包含
|
,表示或,干杯

根据上下文,您使用的是匹配而不是测试。 要使一切正常工作,请使用
/^\d+$/.test(b)
这将返回True或False,如果其中任何一个输入不正确,您可能需要发出一次警报(而不是三次警报),要执行此操作,请在if语句中包含
|
,表示或,干杯