javascript - 显示警报时停止提交

标签 javascript html

我的表单包含文本输入提交。如果输入为空,我尝试用 Javascript 显示警报。

这是我的代码:

String.prototype.trim = function() {
  return this.replace(/^\s+|\s+$/g, "");
}

function emptyArea() {
  if (document.getElementById("type-text").value.trim() == '') {
    alert("Please fill all fields");
  } else("OK");
}
<form>
  <input id="type-text" type="text" placeholder="Type some text">
  <input type="submit" placeholder="Submit" onclick="emptyArea()">
</form>

当我点击提交并且它是空的时,表单仍然提交并且不显示警报。我如何阻止它提交并显示警报?

最佳答案

当我运行您的代码时,当我单击“提交”时,我实际上确实收到了警报。您确定正确附加了事件处理程序吗?我猜测可能实际发生的情况是警报正在显示,但无论表单值是否有效,它都会提交。

如果您想阻止表单提交,请调用e.preventDefault()其中 e 是事件对象,它将作为第一个参数传递给处理函数。

这是一个示例代码笔: https://codepen.io/quinnfreedman/pen/PoqmGYb

function emptyArea(e) {
  if (document.getElementById("text").value.trim() == '') { // .trim is supported by browsers since IE9
    alert("Please fill all fields");
    // the conditions were not met, so call preventDefault to 
    // stop the browsers default behavior of submitting the form
    e.preventDefault();
    e.stopPropagation();
  } else {
    // If we don't preventDefault, the form will submit after this alert
    alert("OK")
  }
}

document.getElementById("Submit").addEventListener("click", emptyArea)
<form action="#">
  <input type="text" id="text" />
  <input type="submit" id="Submit" />
  <!-- NEVER call anything "submit" in a form -->
</form>

关于javascript - 显示警报时停止提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60437674/

相关文章:

javascript - 在 jquery 每个循环中创建多维数组或对象

javascript - 使用 jQuery 自定义字母大小

javascript - setTimeout 中函数的值

javascript - JS : Touch equivalent for mouseenter

html - 如果 DIV 具有 float : none property,则 DIV 不包装子 DIV

html - 蓝色和紫色默认链接,如何删除?

php - CSS 在 PHP 代码后丢失属性?

html - Firefox css 打印问题

javascript - 当鼠标悬停在另一个元素上时,使用 jQuery 为一个元素分配一个类

javascript - float 时div的高度变化