Javascript在Chrome中运行但在IE中没有

时间:2015-03-04 14:54:21

标签: javascript google-chrome internet-explorer

我是javascript的新手。我有一个只接受数字的输入框。如果有人在该输入上进行复制粘贴,则应修剪所有非数字字符。输入字段最多只能包含10个字符。

这是代码。它适用于Chrome,但不适用于IE。有人能弄清楚出了什么问题吗?



<!DOCTYPE html>
<html>
<body>

<input type="text" maxlength="10" title="Number" pattern="[0-9]*" onkeypress='validate(event)' onpaste="strip(this, event)"/>

<p id="demo"></p>

<script>
        function strip(obj, evt) {
            var theEvent = evt || window.event;
            obj.value = theEvent.clipboardData.getData('Text').replace(/\D/g, '');
obj.value = obj.value.substring(0,Math.min(10,obj.value.length));
            theEvent.returnValue = false;
        }

        function validate(evt) {
            var theEvent = evt || window.event;
            var key = theEvent.keyCode || theEvent.which;
            key = String.fromCharCode(key);
            var regex = /[0-9]/;
            if (!regex.test(key)) {
                theEvent.returnValue = false;
                if (theEvent.preventDefault) theEvent.preventDefault();
            }
        }
</script>

</body>
</html>
&#13;
&#13;
&#13;

Chrome版本 - 版本40.0.2214.115 m IE版本 - 9.0.8

3 个答案:

答案 0 :(得分:1)

用以下作品替换你的条形函数:

function strip(input, evt) {
    var clipboardData = window.clipboardData ? window.clipboardData : evt.clipboardData;
    var theEvent = evt || window.event;
    var text = clipboardData.getData('Text');
    var processedText = text.replace(/\D/g, '').substring(0, Math.min(10, text.length));
    input.value = processedText;
    theEvent.returnValue = false;
    if (theEvent.preventDefault) theEvent.preventDefault();
}

答案 1 :(得分:0)

您正在使用属性pattern,这是HTML5中的新属性,而不受版本10以下的IE支持。

答案 2 :(得分:0)

您可以使用带有类型编号的输入来防止插入除数字以外的字符。 但是这种输入类型相对较新,不适用于某些旧版浏览器。

小例子:

<form>This will allow anything.
<input type="text">
<br />This will allow only numbers.
<input type="number">
<br />Try typing in letters in the bottom box and pressing send.
<br />
<input type="submit">

http://jsfiddle.net/yqdsaf3t/

http://caniuse.com/#feat=input-number