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">
用以下作品替换你的 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();
}
我是 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">
用以下作品替换你的 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();
}