验证Javascript中的数字在Firefox中不起作用
当输入文本为0到10(0,1,2,3,4,5,6,7,8,9,10)时,此验证返回true。 退格在Firefox中不起作用,在Google Chrome中,Internet Explorer工作得很好。我试图启用退格的字符码,但问题仍然存在。 我如何让它在firefox中工作 我有这个:验证Javascript中的数字在Firefox中不起作用,javascript,validation,firefox,Javascript,Validation,Firefox,当输入文本为0到10(0,1,2,3,4,5,6,7,8,9,10)时,此验证返回true。 退格在Firefox中不起作用,在Google Chrome中,Internet Explorer工作得很好。我试图启用退格的字符码,但问题仍然存在。 我如何让它在firefox中工作 我有这个: <script> function compruebacampo(evt, campotexto) { var charCodeOfZero = 48; var numberJus
<script>
function compruebacampo(evt, campotexto)
{
var charCodeOfZero = 48;
var numberJustEntered = evt.charCode - charCodeOfZero;
var fullString = campotexto.value + "" + numberJustEntered;
var matchesOne = false;
for (var i = 0; i <= 10; i++) {
if (fullString == ("" + i))
matchesOne = true;
}
if (!matchesOne)
return false;
}
</script>
<input type="textbox" onkeypress="return compruebacampo(event,this)" >
功能compruebacampo(evt、campotexto)
{
var charCodeOfZero=48;
var numberJustEntered=evt.charCode-charCodeOfZero;
var fullString=campotexto.value+“”+numberJustEntered;
var matchesOne=false;
对于(var i=0;i请尝试此选项,它只允许在字段中输入数字:
函数compruebacampo(e,campotexto){
如果(e.which!=8&&e.which!=0&&e.which<48 | e.which>57)){
返回false;
}
}
我本来打算编写一个使用浏览器特定案例的函数(通过navigator.userAgent
),但我觉得这太笨重和复杂了。我认为最简单的方法是将事件处理程序绑定到特定输入,并让它听keyCode
s(在FireFox中的key
s)。此方法还避免了内联JavaScript,这无疑是一个优点
event.keyCode < 58 && event.keyCode > 47
在FireFox中,这将捕获所有数字(0-9
),因为上述操作将失败
event.keyCode == 8 || event.keyCode == 0
捕获退格并允许它们通过
HTML
<input type="text" id="numberInput">
JavaScript
document.getElementById("numberInput").onkeypress = function (event) {
if (event.keyCode < 58 && event.keyCode > 47 || event.key > -1 && event.key < 10) {
/* nothing */
} else if (event.keyCode == 8 || event.keyCode == 0) {
/* nothing */
} else {
event.preventDefault();
}
}
document.getElementById(“numberInput”).onkeypress=函数(事件){
if(event.keyCode<58&&event.keyCode>47 | | event.key>-1&&event.key<10){
/*没什么*/
}else if(event.keyCode==8 | | event.keyCode==0){
/*没什么*/
}否则{
event.preventDefault();
}
}
我在Safari、FireFox和Chrome上进行了测试。这三种浏览器对我都有效。我相信你可以将这些布尔值重写为一个if
block
“按下某个键时会触发keypress事件,该键通常会生成一个字符值”--我知道人们会因为我在这么小的情况下使用它而对我大喊大叫,但它是如此简单和跨浏览器:你为什么不使用jQuery?好的,我记住@elclars谢谢你的帮助,但我只想验证0,1,2,3,4,5,6,7,8,9,10不是所有的数字。有任何建议请询问你的帮助,但我只需要0,1,2,3,4,5,6,7,8,9,10所有的号码,你知道吗
<input type="text" id="numberInput">
document.getElementById("numberInput").onkeypress = function (event) {
if (event.keyCode < 58 && event.keyCode > 47 || event.key > -1 && event.key < 10) {
/* nothing */
} else if (event.keyCode == 8 || event.keyCode == 0) {
/* nothing */
} else {
event.preventDefault();
}
}
$('input').keypress(function (e) {
if ($(this).attr('id') == "txtBoxId") {
regex = new RegExp("^[0-9\b]+$");
var charString = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(charString)) {
return true;
}
else {
e.preventDefault();
return false;
}
}
}