这是我的验证数值的代码,无效。
但是当我按标签键时,我收到一条警告信息。
$j('#ctl00_cphMain_txtQuantity').keypress(function (event) {
if ((event.which != 46 || $j(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57) && (event.which !=8) ) {
event.preventDefault();
alert("Please Enter Valid Quantity");
}
答案 0 :(得分:1)
我的建议是使用regex
代替密钥代码,因为您需要考虑任意数量的密钥代码。那么 CTRL 呢?或 SHIFT ?
试试这个:
$("#foo").keyup(function() {
var $input = $(this);
var regex = /^\d+$/;
if (!regex.test($input.val())) {
alert("Please enter numeric values only");
$input.val($input.val().replace(/\D/, ''));
}
});
答案 1 :(得分:0)
如果在if子句中添加event.keyCode!= 9,它应该可以工作。
答案 2 :(得分:0)
使用keydown而不是keypress而不是keydown。
样品:
$('#test').keydown(function (event) {
if (((event.which != 46) ||
($(this).val().indexOf('.') != -1))
&& ((event.which < 48)
|| (event.which > 57))
&& (event.which != 8)) {
event.preventDefault();
alert("Please Enter Valid Quantity");
}
});
答案 3 :(得分:0)
在这些地方调整代码:
$j('#ctl00_cphMain_txtQuantity').keypress(function (event) {
if ((event.which != 46 ||
$j(this).val().indexOf('.') != -1) &&
(event.which < 48 || event.which > 57) &&
(event.which !=8) ) {
// ---^----------------------------9 is the tabkey
event.preventDefault(); // <------------remove this
alert("Please Enter Valid Quantity");
}
我在这个小提琴中做了一些事情,当其他按键事件发生而不是标签键时会发出警报:http://jsfiddle.net/8YNFw/
您可以在此处找到密钥代码:http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
答案 4 :(得分:0)
FireFox中的正则表达式存在问题。它可能不适用于Tab键测试。我使用了以下代码并在所有浏览器上工作
jQuery(document).on( "keypress", ".element1, .element2", function(e) {
var regExp = new RegExp("^[a-zA-Z \b]*$");
var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (e.keyCode != 9) { // For FireFox
if (!regExp.test(key)) {
e.preventDefault();
return false;
}
}
});