以下是我的javascript代码,限制用户关注:
1)只允许数字和最多两个小数点。
它还限制用户使用制表符,退格键,删除键,左箭头键和右箭头键。
我尝试添加条件event.which!= 8/9/37/38但没有成功。
以下是代码:
$('#txtprice').keypress(function (event) {
if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
event.preventDefault();
}
var text = $(this).val();
if ((text.indexOf('.') != -1) && (text.substring(text.indexOf('.')).length > 2)) {
event.preventDefault();
}
});
任何人都可以在这里纠正我。
EDITED:
修改如下,但无效。
$('#txtprice').keypress(function (event) {
if (event.which == 8 || event.which == 9 || event.which == 37 || event.which == 38) {
event.preventDefault();
return;
}
if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
event.preventDefault();
}
var text = $(this).val();
if ((text.indexOf('.') != -1) && (text.substring(text.indexOf('.')).length > 2)) {
event.preventDefault();
}
});
由于
答案 0 :(得分:0)
你只需要允许你想要的东西,而不是确定你不想要的东西。通过确定keyCode
是句点(190)还是48到57之间,这很容易。
function validateNum(e) {
var elem = document.getElementById("txtprice");
if (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode == 190) {
var txt = elem.value;
if (e.keyCode == 190 && txt.match(new RegExp('\\.','g')).length > 1) {
e.preventDefault();
}
} else {
e.preventDefault();
}
}
这是一个有效的js小提琴:http://jsfiddle.net/e72uqvbv/
更新:我想念了期间情况请求,我已经更新了我的答案。