Я создал форму, и теперь я хочу добавить в нее поле ввода, которое будет принимать только определенное число, то есть цифру "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,'');
});
Ваше регулярное выражение должно заменяться только [^4]
(любой символ, который не является 4). Я не уверен, почему вы также включили -4
(диапазон) и \.
('.' персонаж).
Просто отметить, что защита от нажатия клавиш не очень помогает. Любой может запустить инспектор webkit и разместить там 3 вручную. Если это просто веселый эксперимент, тем не менее, это тоже круто :)
Я знаю, что этот пост немного заплесневелый, поэтому я подумал, что могу принести ему немного больше.
Во-первых, вы не должны использовать "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');
});
keyup
.