
[英]validate number with regular exp in javascript not working for one case
[英]Validate Number in Javascript not working in 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 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)" >
任何帮助将不胜感激。
我打算编写一个使用特定于浏览器的案例的函数(通过navigator.userAgent
),但是我认为这太笨拙且复杂。 我认为最简单的方法是将事件处理程序绑定到该特定输入,并让其侦听keyCode
(FireFox中的key
)。 此方法还避免了内联JavaScript,这绝对是一个加分项。
event.keyCode < 58 && event.keyCode > 47
对于非FireFox浏览器,这将捕获所有数字( 0-9
)。
event.key > -1 && event.key < 10
在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();
}
}
我在Safari,FireFox和Chrome中进行了测试。 对我来说,这三个方面都起作用。 我确信您可以将这些布尔值重写为一个if
块。
$('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;
}
}
}
尝试使用此替代方法,该方法仅允许在字段上输入数字: http : //jsfiddle.net/6faHh/
function compruebacampo(e, campotexto) {
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
return false;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.