繁体   English   中英

为什么我的 javascript 表单验证不起作用?

[英]Why isn't my javascript form validation working?

我的 JS 表单验证没有打印出错误消息,它似乎忽略了阻止默认值。

我已经多次查看代码,似乎无法找到错误。

HTML:

<form id="form">
  <div>
    <label for="firstname">First Name</label>
    <input id="firstname" name="firstname" type="text" />

    <label for="lastname">Last Name</label>
    <input type="text" name="lastname" id="lastname" placeholder="Doe" />

    <label for="email">Email</label>
    <input type="email" name="email" id="email" placeholder="john@doe.com" />

    <label for="comment">Comment:</label>
    <textarea id="comment" name="comment" placeholder="Write something.." style="height:200px;  width: 100%"></textarea>

    <button type="submit">Submit</button>
  </div>
</form>

Javascript:

const firstname = document.getElementById("firstname")
const lastname = document.getElementById("lastname")
const email = document.getElementById("email")
const comment = document.getElementById("comment")
const form = document.getElementById('form')
const errorElement = document.getElementById('error')
form.addEventListener('submit', (e) => {
  let messages = []
  if (firstname.value === '' || firstname.value == null) {
    messages.push('Name is required')
  }
  if (messages.length > 0) {
    e.preventDefualt()
    errorElement.innerText = messages.join(', ')
  }
})

没有错误消息,但我希望它显示我在表单上方设置的 js 错误消息。

这是一个错字错误。 设置e.preventDefault()而不是e.preventDef**ual**t() 你也错过了错误 div 来显示错误。

 const firstname = document.getElementById("firstname") const lastname = document.getElementById("lastname") const email = document.getElementById("email") const comment = document.getElementById("comment") const form = document.getElementById('form') const errorElement = document.getElementById('error') form.addEventListener('submit', (e) => { let messages = [] if (firstname.value === '' || firstname.value == null) { messages.push('Name is required') } if (messages.length > 0) { e.preventDefault() errorElement.innerText = messages.join(', ') } })
 <form id="form"> <div> <label for="firstname">First Name</label> <input id="firstname" name="firstname" type="text" /> <label for="lastname">Last Name</label> <input type="text" name="lastname" id="lastname" placeholder="Doe" /> <label for="email">Email</label> <input type="email" name="email" id="email" placeholder="john@doe.com" /> <label for="comment">Comment:</label> <textarea id="comment" name="comment" placeholder="Write something.." style="height:40px; width: 100%"></textarea> <button type="submit">Submit</button> </div> </form> <div id="error"></div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM