嗨我在Javascript中有以下代码。这不起作用 (您可以在Firefox 17上输入字母)并与其他浏览器一起使用。有人可以告诉我一个解决方法吗?谢谢你的期待。
function onlyNumbers(evt)
{
var e = event || evt; // for trans-browser compatibility
var charCode = e.which || e.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
编辑:
<input name="outletno" type="text" id="outletno" size="15" maxlength="10" onkeypress="return onlyNumbers()" value="<?= htmlentities ($values['outletno']) ?>"></td>
答案 0 :(得分:3)
您没有将事件参数传递给您的函数。
<input name="outletno" type="text" id="outletno" size="15" maxlength="10" onkeypress="return onlyNumbers(event)" value="<?= htmlentities ($values['outletno']) ?>"></td>
Firefox没有全局“事件”符号。你的函数需要一个参数,但你没有传递它。
您可以将浏览器对“onfoo”元素属性的处理视为使用Function
构造函数为您构造函数,如下所示:
element.onfoo = new Function(attributeValue, "event");
(那不是真的会发生什么,但它实际上是这样的。)这意味着属性值中的代码可以预期有一个名为“event”的参数可用,这就是你的意思将传递给你的功能。
您的代码适用于IE,Chrome和Safari,因为这些浏览器执行将“事件”值保留为全局变量。
答案 1 :(得分:0)
这是仅检查数字的不好方法。 charCode远不是跨浏览器的东西。这篇文章解释了键盘事件的大部分差异(如果不是全部):http://unixpapa.com/js/key.html
总的来说,它告诉你尽可能避免使用它们。
这是一种正确的方法(使用onkeyup,因为onkeypress没有更新的值):
document.getElementById('outletno').onkeyup = function() {
// If the value isn't a number, take off the last character
if (!/\d+/.test(this.value)) {
this.value = this.value.slice(0, -1);
}
};
工作jsfiddle:http://jsfiddle.net/uFRwZ/