javascript - Chrome 警告框提交页面,即使返回 false

标签 javascript jquery html asp.net vb.net

在我的应用程序中,我有一个用于搜索项目的文本框。在此文本框中,我希望用户在搜索前必须输入至少 2 个字符。如果少于 2 个字符,那么我想显示一个简单的警告框,告诉用户至少输入 2 个字符。在我的文本框代码看起来像:

function checkSearchLen(obj, defaultEnterButton) {
  if (obj.value == 'Search') obj.value = '';

  if (obj.value.length < 2 && event.keyCode == 13) {
    event.returnValue = false;
    event.cancel = true;
    alert('Please ENter at Least 2 Characters');
    //return false;
    obj.select();
    obj.focus();
    return false;
  } else
    doEnterKey(defaultEnterButton);

}

function doEnterKey(s) {
  if (event.keyCode == 13) {
    event.returnValue = false;
    event.cancel = true;
    document.getElementById(s).click();
  }
}
<input class="searchtext" id="txtSearch" value="Search" onfocus="this.value = '';this.style.color='black';this.style.fontStyle='normal';" onkeydown="checkSearchLen(this,'MenuBar_imgSearchGo');" name="txtSearch" />
在我的 javascript 中,用户每次击键时的功能,它检查正在按下的 keyCode 以查找“Enter”输入。如果用户按下“Enter”并且文本框中的字符数少于 2,那么它应该提醒用户并返回 false。但是,无论用户按下“Enter”时仍会提交表单。我还注意到它没有点击“doEnterKey”功能,它只是提交了表单。感谢您提供任何帮助或建议。

在 Internet Explorer 中一切正常,javascript 代码停止等待用户输入然后继续,返回 false。然而在 chrome 中,警告框显示了它并且它仍然提交表单,几乎就像它没有将 false 返回给元素一样。

最佳答案

在调用中传递事件对象并在 ENTER 上防止事件默认。

我使用了按键事件并在 IE、FF 和 Chrome 上进行了测试。

现在表单提交时不会出现警告消息,因为 ENTER 被阻止了。

function checkSearchLen(event, obj, defaultEnterButton) {
  event = event || window.event;
  if (obj.value == 'Search') obj.value = '';

  if (obj.value.length < 2 && event.keyCode == 13) {
    alert('Please ENter at Least 2 Characters');
    obj.select();
    obj.focus();
    event.preventDefault();
    return false;
  } else
    doEnterKey(defaultEnterButton);

}

function doEnterKey(s) {
  if (event.keyCode == 13) {
    event.returnValue = false;
    event.cancel = true;
    document.getElementById(s).click();
  }
}
<form action="http://www.google.com" onsubmit="alert('submit');">
    <input class="searchtext" id="txtSearch" value="Search" onfocus="this.value = '';this.style.color='black';this.style.fontStyle='normal';" onkeypress="checkSearchLen(event, this,'MenuBar_imgSearchGo');" name="txtSearch" />
</form>

关于javascript - Chrome 警告框提交页面,即使返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34967151/

相关文章:

javascript - Bootstrap 4 - 附加侧边栏时无法保持相同的宽度

html - 样式化输入类型 ="file"按钮

jquery - 使用 jQuery 属性以开头时如何获取 ID 的其余部分

javascript - 正则表达式查找不在引号中且不在括号中的逗号分隔符

javascript - p5.j​​s 中向量数组的问题

javascript:如何制作具有相同数据的多个组合框

javascript - jQuery 显示/隐藏返回未定义,中断插件

javascript - 如何强制 masonry 使用当前/最新的CSS宽度?

ajax - jQuery 和 Ajax with json - 在 IE 中失败

javascript - HTML-如何自动生成无限不同的模态?