Javascript函数不显示警告框
Javascript function does not display alert box
我正在处理一个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"> </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>
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();
};
};
它应该是:document.getElementById("草莓").value;
不是:document.getElementbyId("草莓").value;
您使用小写字母b表示getElementById,这会导致错误。要容易地看到这样的错误,请启用保留chrome日志。在我这边,错误是:未捕获类型错误:document.getElementbyId不是函数
为了防止页面发送错误,添加return 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;
}
}
根据上下文,您使用的是匹配而不是测试。为了使一切正常工作,请使用/^'d+$/.test(b)
,这将返回True或False,如果其中一个输入不正确,您可能需要提醒一次(而不是三次提醒),为此,请将||
包含在if语句中,该语句代表或,干杯!
相关文章:
- 在html页面的iframe中显示一个警告框
- Java 警告 (?) 在 Eclipse (Juno) 中显示为 JavaScript 代码
- 正确禁止显示数据表中的警告
- Jquery单击按钮时不显示警告框
- 有一种方法可以使jslint在使用控制台时显示警告或错误
- 在联系人表单中显示隐藏警告被延迟
- 如何根据所选日期显示警告
- jQuery image丢弃无效的图像类型,并显示一条无效的消息而不是警告框
- 希望在不创建新类的情况下将警告图标显示在正确的位置
- 使用 JavaScript 显示错误消息,不带 OUT 警告框
- 检查时间冲突,只想显示 1 个警告
- 在 javascript 中动态显示一个带有换行符的警告框
- 显示使用 PHP 和 JavaScript 的警告框
- 在 中显示警告框 asp.net 将重定向到空白页,然后返回到原始页面
- 我的警告标签未显示在无效输入上
- 推送提交后,如果输入字段为黑色,则显示验证检查或以红色字母显示警告
- 警告显示false,即使类存在
- 为什么在我的应用中弹出警告显示两次
- 延迟"没有Javascript"警告显示
- 警告显示两次模态引导