Поле ввода, чтобы принять только определенное число

0

Я создал форму, и теперь я хочу добавить в нее поле ввода, которое будет принимать только определенное число, то есть цифру "4". Это больше похоже на проверку спама, когда пользователю задают вопрос: "Каков ответ 1 + 3?" а затем он/она должен был ввести цифру "4" в поле ввода, чтобы форма обрабатывалась. Это также может работать так, что если любое другое число вводится внутри поля ввода и форма отправляется, появляется всплывающее окно с объяснением ошибки.

Я создал jsfiddle, который принимает только цифру 4, но, к сожалению, это позволяет принимать "полные остановки".

HTML:

<input id="humancheck" type="text" maxlength="1" name="humancheck" required />

Javascript:

jQuery('#humancheck').keyup(function () { 
    this.value = this.value.replace(/[^4-4\.]/g,'');
});
  • 3
    Проверка на спам в JavaScript бессмысленна. Боты не будут беспокоиться о вашем коде keyup .
  • 1
    Если вы не хотите разрешить полную остановку, почему у вас есть такая в регулярном выражении?
Показать ещё 2 комментария
Теги:
validation
forms
input

2 ответа

2
Лучший ответ

Ваше регулярное выражение должно заменяться только [^4] (любой символ, который не является 4). Я не уверен, почему вы также включили -4 (диапазон) и \. ('.' персонаж).

Просто отметить, что защита от нажатия клавиш не очень помогает. Любой может запустить инспектор webkit и разместить там 3 вручную. Если это просто веселый эксперимент, тем не менее, это тоже круто :)

0

Я знаю, что этот пост немного заплесневелый, поэтому я подумал, что могу принести ему немного больше.

Во-первых, вы не должны использовать "keyup" для триггера события, как и для интенсивного процессора. Представьте себе, хотите ли вы сопоставить число с более чем одной цифрой, и вы можете увидеть, как "keyup" становится проблематичным.

Использование события "размытие" - лучший триггер, поскольку он проверяет значение числа после того, как пользователь закончил вводить число в поле формы.

Если я понимаю OP, то зачем использовать регулярное выражение для простого совпадения? Вместо этого это один из способов написать вашу функцию (для jQuery 1.11. 0+). Он также делает дополнительную проверку, чтобы гарантировать, что запись действительно является номером.

$('#humancheck').blur( function(){ 
  if (isNaN(this.value)) alert('Not a Number');
  if (this.value != 4) alert('Incorrect Number');
});

Ещё вопросы

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