javascript - 是什么阻止我的验证函数在表单为空时不运行?

标签 javascript html forms function validation

没有传递函数的表单到底发生了什么?我正在尝试使用此函数验证表单是否为空:

JS:

function validateForm() {
    console.log("Validate");
    var y = document.forms["form"]["itemEntered"].value;
    if (y == null || y == "") {
        alert("Must enter an item");
        return false;
    }
}

HTML:

<div>
      <div id="center-container">
        <h4>Enter an Item for Your Shopping List:</h4>
        <hr />
        <form name="form" onsubmit="return validateForm()" method="post" >
          <label for="item">Item:</label> 
          <input required type="text" placeholder="Shopping Items" id="item" name="itemEntered" autocomplete="off" />
          <input type="button"  value="Enter" id="Enter" onclick="javascript:addItem();" />
        </form>
      </div>
    </div>

在 Code Pen 中运行的项目 http://cdpn.io/JGCDB

您可以看到,即使该字段为空,它仍然显示在列表中。

我也试过在 form 标签中使用 required 属性,但没有用。

最佳答案

我发现您的代码存在一些问题,首先,onclick 将在验证之前执行,其次,您将输入声明为“按钮”而不是“提交”,因此点击不会触发表单提交事件。以下是更正后的代码,希望对您有所帮助。

<script type='text/javascript'>
function validateForm() {
    console.log("Validate");
    var y = document.forms["form"]["itemEntered"].value;
    if (y == null || y == "") {
        alert("Must enter an item");
        return false;
    }

    alert('passed validation...');
    addItem();
    return true;
}

function addItem() {
   alert('adding item...');
}
</script>

这是标记。

<div>
      <div id="center-container">
        <h4>Enter an Item for Your Shopping List:</h4>
        <hr />
        <form name="form" onsubmit="return validateForm()" method="post" >
          <label for="item">Item:</label> 
          <input required type="text" placeholder="Shopping Items" id="item" name="itemEntered" autocomplete="off" />
          <input type="submit" value="Enter" id="Enter" />
        </form>
      </div>
    </div>
</body>

关于javascript - 是什么阻止我的验证函数在表单为空时不运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21617501/

相关文章:

html - 等宽字体中字符的字体大小和宽度之间有什么依赖关系?

php - IE 中表单中的元素为空

javascript - 表单验证 - 单选循环

javascript - 如何在 mongodb 模式中使用预定义值创建字段,并让用户使用单选按钮选择值

javascript - 为什么 AngularJS ng-repeat 过滤搜索词不起作用?

html - 更改导航栏上的背景颜色时出现问题。

java - 新行未插入数据库中

javascript - 谷歌地图 API : how to tell if a marker is hidden by another marker?

javascript - 如何从pdf.js获取原始数据

html - <a href =""> 在 IE 中不起作用,但在 chrome 中起作用