如何让这个Javascript函数在IE浏览器中工作?

2024-02-17

此 JAVSCRIPT 功能的目的是防止用户输入任何字母字符。如果用户输入这些字符,光标根本不会移动并停留在同一位置。但是,如果用户输入数字,光标将移动到下一个位置。

例如,在此文本字段中,我只允许用户输入数字。此方法在除 IE 8 及更早版本之外的所有浏览器中都可以正常工作。我在 Firefox、Chrome 和 Safari 甚至 Safari 模拟器上进行了测试,没有出现任何问题。如果有人指导我,甚至建议我修改我的方法,以便它在 IE 中也能正常工作,那将是很大的帮助!谢谢

function AllowOnlyDigit(e) {
     var ev = e || window.event;
     var key = ev.keyCode || ev.which || ev.charCode;

     if (key > 31 && (key < 48 || key > 57)) {
         return false;
     }
     return true;
 }

这就是我调用此方法的方式:

<input type="text" onkeypress="return AllowOnlyDigit(event)" />

我不会使用内联 JavaScript https://stackoverflow.com/questions/5871640/why-is-using-onclick-in-html-a-bad-practice but 添加事件监听器 https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener来自脚本。然后,我将使用一个函数来允许添加跨浏览器事件侦听器(在本例中addEvent)。我可能会做你的AllowOnlyDigit也不同,但保持原样,然后你可以尝试这个。我没有 IE8(或任何 Windows 产品)来测试,但它应该可以工作。

HTML

<input type="text" />

JavaScript

function addEvent(elem, event, fn) {
    if (typeof elem === "string") {
        elem = document.getElementById(elem);
    }

    function listenHandler(e) {
        var ret = fn.apply(this, arguments);

        if (ret === false) {
            e.stopPropagation();
            e.preventDefault();
        }

        return (ret);
    }

    function attachHandler() {
        window.event.target = window.event.srcElement;

        var ret = fn.call(elem, window.event);

        if (ret === false) {
            window.event.returnValue = false;
            window.event.cancelBubble = true;
        }

        return (ret);
    }

    if (elem.addEventListener) {
        elem.addEventListener(event, listenHandler, false);
    } else {
        elem.attachEvent("on" + event, attachHandler);
    }
}

function AllowOnlyDigit(e) {
    var ev = e || window.event,
        key = ev.keyCode || ev.which || ev.charCode;

    if (key > 31 && (key < 48 || key > 57)) {
        return false;
    }

    return true;
}

addEvent(document.getElementsByTagName("input")[0], "keypress", AllowOnlyDigit);

On jsfiddle http://jsfiddle.net/Xotic750/cFMS9/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让这个Javascript函数在IE浏览器中工作? 的相关文章

  • 如何用js获取一个月的4个星期一?

    我正在构建一个图表 其中 x 轴应该是一个月的四个星期 我只想显示该月的四个星期一 我已经有了currentMonth和currentYear变量 而且我知道如何获取该月的第一天 我所需要的只是将一个月的四个星期一放入数组中 所有这些都在同
  • 如何删除事件监听器?

    下面是我的事件监听器代码 window addEventListener beforeunload function e if sessionStorage token abide call api 如果我想删除这个事件监听器 我该怎么办
  • moment.calendar() 没有时间

    我想使用不带时间的 moment calendar 选项 所以而不是 上周二下午 5 点 我想要 上周二 有人知道 Moment 现在是否有解决方案吗 我找到了这个小提琴http jsfiddle net nawxZ http jsfidd
  • 将 javascript 合并到一个文件中

    最近阅读了雅虎的网络优化技巧并使用 YSlow 我在我的一个网站上实现了他们的一些想法http www gwynfryncottages com http www gwynfryncottages com你可以在这里看到该文件http ww
  • 需要禁用引导时间选择器的输入

    我正在使用 Bootstrap 时间选择器 我已经成功实施了 但我需要的是用户只能在 30 分钟间隙内插入 例如 10 00 10 30 11 00 等 为此我尝试过的是minuteStep如下图所示 效果完美 fantasyleague
  • 解释 javascript 中的奇怪行为

    我在推特上看到了这个 我也无法解释 定义一个onload函数按以下两种方式工作 1 JSFiddle http jsfiddle net 6rq9k 2 JSFiddle http jsfiddle net 6rq9k 1
  • ExitFullScreen 不起作用 + 无论如何要按键盘单击按钮?

    我的浏览器 Google Chrome 版本 33 0 1750 154 m Script function exitFullscreen var element document documentElement if element mo
  • 使用什么事件来在选择文本框中的值时显示警报消息

    我正在使用 jquery 的自动完成 api 来从数据库中获取名称 但是我想在从显示的文本框中选择名称时显示一条警报消息 我将显示一个图像以便更好地理解 当我输入 S 时 它将显示所有包含 S 的记录 所以问题是 如果我选择例如 Spars
  • 如何在 jQuery 中使用 CSS“background-image”属性添加的图像上绑定单击事件

    这是我的小提琴link http jsbin com otisur 1 edit 我想我的问题通过标题本身就很清楚了 尽管如此 我正在寻找一种绑定的方法click使用 css 添加的图像上的事件background image财产 我知道
  • Angular - Safari 无法正确显示 DOM

    我是 Angular 的新手 使用 Angular 4 我尝试通过在关联的组件类文件中设置属性来更新特定元素 但是 除非我尝试强制重新绘制网页 通过调整窗口大小等 否则页面不会更新 我打开检查器 看到 DOM 已更改 但显示与元素检查器中的
  • Backbone.js 与 Google 地图 - 有关此问题和侦听器的问题

    我有一个为 Google Maps v3 创建的模块 我正在尝试将其转换为 Backbone js 视图构造函数 到目前为止 这是我的视图模块 我将解释代码后遇到的问题 pg views CreateMap Backbone View ex
  • 如何在WebBrowser控件中注入Javascript?

    我试过这个 string newScript textBox1 Text HtmlElement head browserCtrl Document GetElementsByTagName head 0 HtmlElement scrip
  • 如何按值删除数组中的多个项目?

    我正在尝试做一个removeAll 函数 它将删除具有该特定值 而不是索引 的数组的所有元素 当我们对循环进行任何更改时 棘手的部分就出现了 索引往往会移动 使其很难像我们想要的那样工作 并且每次更改时都重新启动循环 这在大数组上效率非常低
  • 替换打字稿中字符串中字符的所有实例?

    我正在尝试用 x 字符替换电子邮件中的所有句号 例如 电子邮件受保护 cdn cgi l email protection 将变为 myxemail emailxcom 电子邮件设置为字符串 我的问题是它不只是替换句号 而是替换每个字符 所
  • backbone.js:视图中影响集合中不同模型的按钮

    我刚刚开始使用backbone js 到目前为止 我真的很喜欢它 我有这样的事情 ModelA ModelB ViewA ViewB ModelA 持有 ModelB 的集合 如何使用按钮构建模型 B 的视图 单击该按钮会更改集合中下一个
  • 如何在 JavaScript 中从代理对构造 UTF-16 字符?

    以下计算 Unicode 代码点的 UTF 16 代理对 戴着医用口罩的脸 https emojipedia org face with medical mask 但是如何从代理对构造字符以在字符串中使用呢 const codepoint
  • 如何在 JSP 编辑器中激活 javascript 的语法着色 - Eclipse

    在某些情况下 javascript 确实必须位于 JSP 页面中 而不是位于单独的文件中 有些框架还使用Javascript做一些事情 以便用户将其包含到JSP标签中 这样JS就不会出现在
  • 将 javascript 变量作为参数传递给 @url.Action()

    是否可以将javascript变量作为参数传递给 url Action 因为据我所知可能存在服务器和客户端问题 我的要求是我必须根据过滤器下载文件 并进行ajax调用不适用于下载文件 所以我对 url Action 进行了编码 但无法实现这
  • 将一维数组转换为二维数组[重复]

    这个问题在这里已经有答案了 我正在开发一个程序 我必须将文本文件中的值读入一维数组 我已经成功获取该一维数组中的数字 m1 1 2 3 4 5 6 7 8 9 但我希望数组是 m1 1 2 3 4 5 6 7 8 9 您可以使用此代码 co
  • 开玩笑 setTimeout 不暂停测试

    it has working hooks async gt setTimeout gt console log Why don t I run expect true toBe true 15000 我已经查看了这个答案 Jest 文档和几

随机推荐

  • java中的Double {{ }}语法问题[重复]

    这个问题在这里已经有答案了 可能的重复 Java 双括号初始化 的效率 https stackoverflow com questions 924285 efficiency of java double brace initializat
  • NodeJS - 在 Android/iPhone 移动设备中打开和关闭 Tourch/手电筒

    我在 nodeJS 中有一个项目 我在系统和移动设备上使用它 我需要执行以下步骤 1 添加手电筒开关按钮 2 仅当该功能支持时 才会显示该按钮 手机和浏览器 3 灯应默认关闭 当我使用下面提到的代码时 它从我的系统启用我的网络摄像头闪光灯
  • SVN+SSH 连接出现错误 210002,网络连接意外关闭

    好的 我在设置 SVN SSH 时遇到问题 我在 Linux 服务器上运行 SVN 并尝试从运行 Snow Leopard 的 Mac 笔记本电脑进行连接 XCode 尝试连接 但给出消息 错误 210002 网络连接意外关闭 网上似乎没有
  • 富文本框中的简单文本颜色

    我可以找到一百万个使用 reg ex 将语法突出显示应用于富文本框的示例 但我需要的是一种简单的方法来添加不同颜色的单词 如果将 Hello World 一词放入文本框中并使 Hello 为红色 World 为绿色 那么代码是什么 这段代码
  • 使用 bootstrap 和使用选项卡时迷你图不绘制

    我使用 bootstrap 和 jQuery Sparklines 获得了 RubyOnRails 应用程序 3 2 x http omnipot net jquery sparkline s about http omnipotent n
  • 如何以编程方式打开/关闭复合按钮而不影响 onCheckedChangeListener 中的 onCheckedChanged()

    I use a CompoundButton在我的应用程序中 我调用一个名为newsLetterUpdate in the onCheckedChange 的回调CompoundButton OnCheckedChangeListener
  • 龙卷风 @web.asynchronous @gen.coroutine VS @gen.coroutine 有什么区别

    In the document http www tornadoweb org en stable web html highlight web asynchronous tornado web asynchronous 如果该方法也用 g
  • 如何在javascript中从字符串中提取数字

    我在 javascript 中有一个元素 如下所示 span 280ms span 我想从 span 元素中提取 280 我该怎么做 span 元素中的内容可以是任意数字 后跟 ms parseInt 很甜蜜 HTML span 280ms
  • HealthKit - requestAuthorization(toShare:read:completion:) 总是成功

    我正在使用 Xcode 8 beta 6 并且请求访问 Health 应用程序 方法requestAuthorization toShare read completion 请求授权总是会产生一个true当完成处理程序返回时 success
  • 如何安装缺少的 Qt 模块?

    如何在 Mac OS 下安装 添加缺少的 Qt 模块 我已经安装并运行了 Qt Creator 但是新项目出现以下错误 Project ERROR Unknown module s in QT charts 我可以直接下载并安装缺少的模块
  • 无服务器 - 部署期间出现“未知对象类型 asyncfunction”错误

    今天早上 我的项目的无服务器部署开始失败 我没有更改代码中的任何内容 上次成功部署是在大约一周前 这是部署日志 Error Error Unknown object type asyncfunction at Object object u
  • 如何在 iOS 中创建包括 Swift 的开发框架?

    我的目标是创建一个包含 Swift 和 Objective C 的 iOS 框架 我可以在我的开发项目中使用它 这个框架的本质是框架本身正在开发中 因此 每次我使用此框架构建项目时 由于缺乏更好的术语 我将使用该框架的项目称为 使用 项目
  • 从 FTP 流式传输文件并让用户同时下载

    我正在创建一个备份系统 其中备份将自动生成 因此我将把备份存储在不同的服务器上 但是当我想下载它们时 我希望链接是一次性链接 这并不难但是 为了确保安全 我正在考虑存储这些文件 以便它们无法通过其他服务器上的 http 访问 所以我要做的是
  • iOS 推送通知声音不来

    我正在开发 Ios 推送通知 我可以在其中获取推送通知 但问题是我在收到推送通知时无法听到任何声音 我还检查了我的通知中心 在那里我已经启用了声音 下面给出了我的代码 请指导我如何解决这个问题 UIApplicationMain class
  • COM 的跨平台替代方案

    我一直着迷于基于组件的编程 无论是使用 COM 另一个系统 还是仅使用纯 C 中的范例 如果一个人通常习惯 传统 OOP 模型 那么它需要一些时间来适应 但这绝对是值得的 它使我的代码更易于维护且更易于扩展 我目前正在进行的项目正在使用范例
  • javascript window.open 从回调

    window open 从主线程调用默认打开新选项卡 但是 这里每次都会打开新窗口 Opera 16 和 Google Chrome 29
  • 我需要在 Oracle 上的外键上创建索引吗?

    我有一张桌子A和一张桌子B A有一个外键B on B的主键 B ID 由于某种原因 我知道有合理的原因 当我在键上连接这两个表时 它没有使用索引 是否需要单独创建索引A B ID或者外键的存在应该提供这一点 外键约束本身并不提供 Oracl
  • 为什么 is_copy_constructible 在 MSVC12 中为 unique_ptr 返回 true

    我本来期望这个静态断言会触发 include
  • 具体QPushButton样式

    如何自定义 QPushButton 或 QToolButton 的外观 使其看起来像elementaryos 的网页 按钮 我真正想要的是特征图像位置和侧面的文字 也许如果我幸运的话我也可以得到这样的边框 但我真的不需要标题下面的小描述 我
  • 如何让这个Javascript函数在IE浏览器中工作?

    此 JAVSCRIPT 功能的目的是防止用户输入任何字母字符 如果用户输入这些字符 光标根本不会移动并停留在同一位置 但是 如果用户输入数字 光标将移动到下一个位置 例如 在此文本字段中 我只允许用户输入数字 此方法在除 IE 8 及更早版