Javascript 在 Chrome 中工作但不在 IE 中工作

Javascript working in Chrome but not in IE

我是 javascript 的新手。我有一个只接受数字的输入框。如果有人在该输入上复制粘贴,它应该 trim 所有非数字字符。输入字段最多只能有 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>

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

您正在使用 pattern 属性,这是 HTML5 中的新属性,低于版本 10 的 IE 不支持它。

您可以改用数字类型的输入,以防止插入数字以外的字符。 然而,这种输入类型相对较新,无法在某些较旧的浏览器上使用。

小例子:

<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

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

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