【问题标题】:How to exclude numbers from entry on IE11?如何从 IE11 的条目中排除数字?
【发布时间】:2015-12-10 21:07:28
【问题描述】:

在 IE 11 之前,如果您不想输入字符,可以在键码中输入零。

<asp:TextBox id="TextBox1" runat="server" onkeypress="ValidateText();">    
</asp:TextBox>

function ValidateText() {
    if (!((window.event.keyCode < 48 || window.event.keyCode > 57) && window.event.keyCode != 46)) {
        window.event.keyCode = 0;
    }

这适用于 IE 10,但不适用于 IE 11。

【问题讨论】:

  • 可以取消冒泡吗? msdn.microsoft.com/en-us/library/ms533545(v=vs.85).aspx 我认为这可能仅限于 IE;看这里:stackoverflow.com/a/7596403/424129
  • 你可能应该看看DOM event handlers work, cross-browser是怎么做的。 IE11(及其后续版本,Edge 浏览器)在 DOM 事件方面与其他浏览器的工作方式更相似。我可以为您提供这个具体问题的答案,但我认为您可以通过更多地了解该主题获得更好的服务。
  • 事件对象 放在 window 上是一种较旧的方法。多年来,Internet Explorer 一直将 事件对象 传递给处理程序,就像所有其他主流浏览器一样。

标签: asp.net internet-explorer-11


【解决方案1】:

window.event 的使用是在事件处理程序中获取事件的过时方式。最好像这样将事件传递给处理程序:

onkeypress="return ValidateText(event);"

注意return;以后会有帮助的。

在您的事件处理程序中,您现在将事件作为参数传入。另外,要知道从事件处理程序返回 false 会取消事件。

function ValidateText(event) {
    return event.keyCode < 48 || event.keyCode > 57 || event.keyCode === 46;
}

现在我们可以返回按下的键是否不是数字。

【讨论】:

  • 谢谢迈克。多么好的和简单的解决方案。我确实做了一些改变,这正是我所需要的。
  • 很高兴它有帮助!您可以做的一件事来感谢我是通过单击向上箭头和/或接受答案(即向下箭头下方的复选标记)来“投票”答案。请参阅the help center 了解更多信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 2017-01-14
相关资源
最近更新 更多