Я использую jQuery для проверки текстового поля, чтобы разрешить только числа. Проблема в том, что она позволяет сдвинуть + специальные символы. Я использовал аналогичный код для проверки имени, за исключением нескольких изменений, но не допускает никаких специальных символов. Я запутался. Мой код
if(e.keyCode==46 || e.keyCode==8|| e.keyCode==9 || e.keyCode==37 || e.keyCode==39)
{
// do nothing allow
}
else if(e.keyCode>=48 && e.keyCode<=57)
{
// do nothing allow
}
else
{
e.preventDefault();
}
Вот моя скрипка. На скрипке первое поле ввода не позволяло использовать специальные символы, такие как @,#,$,%
. Но второй позволяет использовать специальные символы. Я проверил специальные символы в инструкции If
. Правильно ли моя логика? Что-то не так?
вот обновленный код
var reg = new RegExp('^\d+(\.\d{1,2})?$');
$('#phone')
.keydown(function(evt){
var charCode = evt.which || evt.keyCode;
var charStr = String.fromCharCode(charCode);
if (evt.keyCode == 46 || evt.keyCode == 8 || evt.keyCode == 9 || evt.keyCode == 27 || evt.keyCode == 13 ||
// Allow: Ctrl+A
(evt.keyCode == 65 && evt.ctrlKey === true) ||
// Allow: home, end, left, right
(evt.keyCode >= 35 && evt.keyCode <= 39) || charCode == 46) {
// let it happen, don't do anything
return;
}
else if (!reg.test(charStr)) {
evt.preventDefault();
}
else {
}
});
Надеюсь это поможет
Я думаю, что изменение вашей первой функции привязки события от keydown
к keypress
решает проблему:
См. Http://jsfiddle.net/cH3zP/5/
$('#phone').keypress(function(e){
if(e.keyCode==46 || e.keyCode==8|| e.keyCode==9 || e.keyCode==37 || e.keyCode==39)
{
// do nothing allow
}
else if(e.keyCode>=48 && e.keyCode<=57)
{
// do nothing allow
}
else
{
e.preventDefault();
}
});
Это должно работать: Попробуйте
var schk=0;
$('#phone').keyup(function(e){
if(e.keyCode==16)
{
schk=0;
}
});
$('#phone').keydown(function(e){
if(e.keyCode==16)
{
schk=1;
}
});
Что я делаю в своем коде, когда пользователь нажимает кнопку, я просто изменяю значение глобальной переменной schk
на 1
Пока пользователь держит ее нажатой, она останется 1
.
когда пользователь покидает клавишу сдвига, он снова инициализируется 0
позволяя его запись.
Зачем работать на 1-й вход, а не на 2-ое в вопросительном скрипте?
В первом поле ввода вы не разрешаете отображение чисел. shift + 1 запускает тот же код клавиши, что и при нажатии 1.So, если вы набираете 1 или! код ключа будет таким же 49
.