【问题标题】:JS/HTML my form submit button isn't showing an error message when the form is incompleteJS/HTML 我的表单提交按钮在表单不完整时不显示错误消息
【发布时间】:2019-08-25 10:04:13
【问题描述】:

只学习了几个月,试图学习基础知识。我创建了一个表单,我尝试输入 javascript 以在单击提交按钮时显示错误消息,但信息不完整。到目前为止,我只在用户名字段上对此进行了测试,但是当我单击提交但将用户名留空时,我的消息“需要名称”没有显示。

我从 youtube 视频中遵循了这段代码,据我所知,它看起来还不错!我也将 js 放入了语法验证器中。我最初在 div 上有 ID 而不是输入标签,所以改变了这个。

const name = document.getElementById('name')

formZ.addEventListener('submit', (e) => {
  let messages = []
  if (name.value === '' || name.value == null) {
    messages.push('Name is required')
  }

  if (messages.length > 0) {
    e.preventDefault()
    error.innerText = messages.join(', ')
  }
})
<div id="errorMessage"> </div>

<form action="/" method="GET" id="formZ">
  <div id="form">
    <div>
      <input type="text" placeholder="Username" required="" class="inputField" id="name">
    </div>
    <div id="submitArea">
      <button type="submit" class="submitButton">Submit</button>
    </div>
  </div>
</form>

所以我的目标是,用户尝试提交表单而不填写他们的姓名,弹出一条错误消息说“需要姓名”。

【问题讨论】:

  • 添加 html5 表单验证器,如验证所需的属性。

标签: javascript html form-submit


【解决方案1】:

您没有得到预期的结果,因为名称字段是required,这意味着如果该字段留空,则不会发生提交。

由于您在提交时所做的唯一检查是name 不为空或不为空,并且当name 为空时,浏览器会自动阻止用户提交表单,因此您看不到错误消息。

我添加了当用户输入字符串a 时添加错误的条件。尝试输入a并提交,您将看到预期的结果。

另外,您的代码中缺少一些变量(errorformZ),所以我也添加了它们。

在我看来,有 2 个选项供您选择: 1. 添加不同的错误案例,不只检查空值。 2. 不要使用required 属性。

无论如何,我建议您阅读有关 form validation 的信息,它可能会对您有所帮助。

const name = document.getElementById('name');
const error = document.getElementById('errorMessage');
const formZ = document.getElementById('formZ');

formZ.addEventListener('submit', (e) => {

  let messages = [];
  if (name.value === '' || name.value == null || name.value === 'a') {
    messages.push('Name is required');
  }

  if (messages.length > 0) {
    e.preventDefault()
    error.innerText = messages.join(', ')
  }
})
<div id="errorMessage"> </div>

<form action="/" method="GET" id="formZ">
  <div id="form">
    <div>
      <input type="text" placeholder="Username" required="" class="inputField" id="name">
    </div>
    <div id="submitArea">
      <button type="submit" class="submitButton">Submit</button>
    </div>
  </div>
</form>

【讨论】:

  • 太棒了,非常感谢。我已经删除了必填字段。所以基本上,通过在 html 中使用“必需”,浏览器会停止任何提交,因此不能错误地提交以显示错误消息?是的,抱歉我确实有这些变量,但忘记显示它们。
  • @ChaliiisR 或许您可以离开required,并在每次点击提交按钮时触发验证功能onclick="someFunction()",这样您就可以两全其美了。
  • 所以当它被点击而不是提交时的功能?有趣,是的,我一定会尝试的。昨天我花了 4 个小时试图弄清楚这一点,你不知道我现在有多开心!再次感谢。
猜你喜欢
  • 2022-08-22
  • 2021-06-27
  • 2019-07-16
  • 2022-11-18
  • 2011-02-19
  • 2015-10-17
  • 2015-12-12
相关资源
最近更新 更多