[英]Javascript function, calls another function, but return false doesn't stop
[英]javascript doesn't return false
我可以在此处看到警报消息。 即使返回false之后,我也可以看到我的表单将其发布。 代码在哪里损坏?
function ValidateForm(){
var productName = document.addProduct.product_name;
var partNumber = document.addProduct.part_number;
var description = document.addProduct.description;
var price = document.addProduct.price;
var formelements = [productName, partNumber, description, price];
formelements.forEach(function(obj) {
if(obj.value=="") {
obj.style.borderColor = "#FF0000";
alert(obj);
return false;
}
});
我的HTML代码
<form action="product_formhandler.php" name="addProduct" id="addProduct" onsubmit="return ValidateForm();" method="post">
<table>
<tr>
<td>
Product Name:
</td>
<td>
<input type="text" id="product_name" name="product_name" />
</td>
</tr>
<tr>
<td>
Part number:
</td>
<td>
<input type="text" id="part_number" name="part_number" />
</td>
</tr>
<tr>
<td>
Description:
</td>
<td>
<textarea id="description" name="description" rows="8" col="25"></textarea>
</td>
</tr>
<tr>
<td>
Price:
</td>
<td>
<input type="text" id="price" name="price" />
</td>
</tr>
<tr>
<td colspan="2" style="text-align: center;">
<input type="reset" id="reset" value="Reset" />
<input type= "hidden" name="addproduct" value="1" />
<input type="submit" id="addProductSubmit" name="action" value="Add" />
</td>
</tr>
</table>
</form>
ValidateForm
函数没有return
语句。 您拥有的唯一功能就是传递给forEach
的匿名函数
forEach
之前定义一个变量 true
) if (condition) { retVal = false; }
没有else
) 这样:
var retVal = true;
formelements.forEach(function(obj) {
if(obj.value=="") {
obj.style.borderColor="#FF0000";
alert(obj);
retVal = false;
});
return retVal;
或者,使用传统的for循环:
for (var i = 0; i < formelements.length; i++) {
var obj = formelements[i];
if (obj.value == "") {
obj.style.borderColor="#FF0000";
alert(obj);
return false;
}
}
尽管一旦发现单个故障,该方法就会停止 。
您从forEach
循环中返回的是false
, 而不是验证函数。 您需要执行以下操作:
/* Declare variable outside of loop which is set to true by default */
var forEachResult = true;
formelements.forEach(function(obj) {
if(obj.value=="") {
obj.style.borderColor="#FF0000";
alert(obj);
/* Rather than returning false, set the variable to false instead. */
forEachResult = false;
/* Break the loop. */
return;
}
/* Return the variable which will either be true or false. */
return forEachResult;
function ValidateForm(){
var productName=document.addProduct.product_name;
var partNumber=document.addProduct.part_number;
var description=document.addProduct.description;
var price=document.addProduct.price;
var formelements =[productName, partNumber, description, price];
var isValid = true;
formelements.forEach(function(obj) {
if(obj.value=="") {
obj.style.borderColor="#FF0000";
alert(obj);
isValid = false;
return false;
}
});
return isValid;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.