如何使这个Javascript函数在IE浏览器中工作? [英] How to make this Javascript function work in IE Browser?

查看:81
本文介绍了如何使这个Javascript函数在IE浏览器中工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

The purpose of this JAVSCRIPT function is to prevent users from entering any alpha characters. If user enters those characters, the cursor does not move at all and stays at the same place. However if user enters a digit, cursor moves to the next position.

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

For example, in this text field, I only allow users to enter digits only. This method is working fine in all browsers except IE 8 and earlier. I tested it on Firefox, Chrome, and Safari and even in Safari emulator with no issues. If anybody guide me or even suggest me to modify my method so that it also works fine in IE that would be great help!!! Thank you

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;
 }

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

and this is how I am invoking this method :

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


推荐答案

我不会使用在线javascript ,但从脚本添加事件监听器。然后我将使用一个函数来允许添加跨浏览器事件侦听器(在此示例中为 addEvent )。我可能也会以不同的方式执行您的 AllowOnlyDigit ,但保留原样然后您可以试试这个。我没有IE8(或任何Windows产品)进行测试但它应该可以工作。

I would not use inline javascript but add the event listener from a script. I would then use a function to allow cross-browser event listeners to be added (in this example addEvent). I would probably do your AllowOnlyDigit differently too, but leaving it as is then you could try this. I don't have IE8 (or any windows products) to test with but it should work.

HTML

<input type="text" />

Javascript

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

这篇关于如何使这个Javascript函数在IE浏览器中工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆