javascript 不返回 false

标签 javascript onsubmit

我可以在此处看到警报消息。即使在返回 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; } 没有 否则)
  • 最后返回

这样的:

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

尽管一旦发现单个故障,这种方法就会停止

关于javascript 不返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19702791/

相关文章:

javascript - 如何在包装 div 中启用 Froala 编辑器?

javascript - 为什么引用未声明的变量会引发引用异常,而引用未声明的属性却不会?

javascript - 使用 Javascript 和 onSubmit 自动下载文件

javascript - 多个表单的多个 onsubmit 处理程序

javascript - 表单 onsubmit 不起作用结束更改输入值

javascript - 运用于. ("submit") HTML 表单不起作用

javascript - 如何复制到剪贴板javascript

javascript - 对 Play REST 服务器的 Angular 2 http 请求

javascript - 将 jQuery 函数应用于基于字符串的对象

Javascript OnSubmit 第二次不起作用