验证表格,空字段消失的警告,持续约3毫秒

时间:2018-05-12 22:41:05

标签: javascript html

验证表单,如果用户没有在字段中输入文本,则将字段名称添加到名为flag的数组中,然后函数errormsg在输入字段中插入文本,让他们知道他们忘记填写领域。 它可以工作但只有大约三毫秒,任何想法为什么?

var flag = [];

function validar(form) {
  if (form.name.value == "") {
    flag.push("name");
  }
  if (form.email.value == "") {
    flag.push("email");
  }
  if (form.message.value == "") {
    flag.push("message");
  }
  errorMsg(flag);
  flag.length = 0;
}

function errorMsg(flag) {
  for (var i = 0; i < flag.length; i++) {
    var errorname = document.getElementById(flag[i]);
    errorname.value += "You Must Enter " + flag[i];
  }
}
<form onsubmit="return validar(this)">
  <label for="name">Nombre</label><br>
  <input type="text" name="name" id="name"><br>
  <label for="email">Email</label><br>
  <input type="text" name="email" id="email"><br>
  <label for="message">Mensaje</label><br>
  <textarea name="message" id="message"></textarea><br>
  <button type="submit" name="button">Enviar</button>
</form>

1 个答案:

答案 0 :(得分:1)

您需要检查JobIntentService中是否有任何元素 - 如果有,请调用flag以阻止表单提交。为此,您还需要引用提交事件(表单本身)。内联处理程序与preventDefault()一样糟糕,因此请在Javascript中附加侦听器。您还可以在每次调用eval时创建新的flag数组,而不是每次都将其长度手动重置为validar

0
const form = document.querySelector('form');
form.addEventListener('submit', validar);
function validar(event) {
  var flag = [];
  if (form.name.value == "") {
    flag.push("name");
  }
  if (form.email.value == "") {
    flag.push("email");
  }
  if (form.message.value == "") {
    flag.push("message");
  }
  if (flag.length > 0) {
    errorMsg(flag);
    event.preventDefault();
  }
}

function errorMsg(flag) {
  for (var i = 0; i < flag.length; i++) {
    var errorname = document.getElementById(flag[i]);
    errorname.value += "You Must Enter " + flag[i];
  }
}

请注意,通过向<form> <label for="name">Nombre</label><br> <input type="text" name="name" id="name"><br> <label for="email">Email</label><br> <input type="text" name="email" id="email"><br> <label for="message">Mensaje</label><br> <textarea name="message" id="message"></textarea><br> <button type="submit" name="button">Enviar</button> </form>个问题提供input属性,不需要Javascript,这会更容易:

required