Значение JQuery Validate Text Box

0

Я использую 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. Правильно ли моя логика? Что-то не так?

  • 0
    Я думаю, что все в порядке. Однако вы должны проверить на стороне сервера значения, которые вы получаете от пользователя. Javascript в браузере может быть отключен, и, следовательно, злоумышленник может отправить вам значения, которые подрывают вашу логику. Поэтому вы должны проверить их на стороне сервера, прежде чем они будут сохранены в БД.
  • 0
    В HTML5 вы можете использовать атрибут pattern, который может быть проще: w3schools.com/tags/att_input_pattern.asp
Показать ещё 1 комментарий
Теги:

3 ответа

0

вот обновленный код

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 {
        }
    });

Надеюсь это поможет

0

Я думаю, что изменение вашей первой функции привязки события от 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();
}
});
  • 0
    Ничего не отображает
  • 0
    @Zword ничего не показывает? ссылка? Я только что проверил это, и я могу ввести значения в текстовые поля, как запрос оригинального вопроса ..
Показать ещё 13 комментариев
0

Это должно работать: Попробуйте

http://jsfiddle.net/cH3zP/6/

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.

  • 0
    Если ты объяснишь почему, тогда я +1
  • 0
    Что я должен объяснить? мой код? или почему ваш не работает?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню