点击功能未定义,我不知道为什么

时间:2020-09-29 23:17:52

标签: javascript forms validation

我必须验证电子邮件和电话。两者都不是强制性的,仅一个就足够了。 当我单击我的按钮时,代码错误是未定义handleValidation,但我不为什么。甚至控制台也不会打印console.log。

此处是HTML:

mainloop

这里是JS:

...
...
...
TitleLabel.pack()
GameLabel.pack()
ClickingGameButton.pack()
main.mainloop()

2 个答案:

答案 0 :(得分:1)

  • 在脚本中设置事件监听器,而不是onclick属性
  • 您没有获得输入值,但得到了输入
  • 输入值应获取到验证功能中,而不是外部
  • 您的电子邮件正则表达式似乎不起作用(我没有检查电话号码)

如果您纠正了所有这些问题,您的脚本应如下所示:

const emailVal = () => {
  let email = document.querySelector("#email").value;  
  if (!(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test(email))) {
    console.log("bad email")
    return false;
  }
  console.log("good")
  return true;
}

const telVal = () => {
  let tel = document.querySelector("#phone").value;
  if (!(/^\d{9}$/.test(tel))) {
    console.log("bad tel")
    return false;
  }
  console.log("good");
  return true;
}

const handleValidation = () => {
  if (emailVal() || telVal()) {
    alert("tu consulta fue enviada satisfactoriamente");
  } else {
    alert("el email y/o el teléfono son necesarios para contactarte");
  }
}

document.getElementById('send-btn').addEventListener('click', handleValidation);

当然,您还必须删除按钮的onclick属性。 电子邮件验证正则表达式的来源:https://www.w3resource.com/javascript/form/email-validation.php

答案 1 :(得分:0)

我在jsfiddle中检查了您的代码。我收到的时间很长,“电子邮件是您的电话,还是联系我们”。因此,代码在某些方面是正确的。我建议在html之后添加JSSript,反之亦然。我一直都在混。

相关问题