Просмотр полной версии : Регулярное выражение - проверка ввода
Всем привет.
Чтобы проверить соответствует ли значение шаблону установлена проверка:
<input type="text" id="test2" name="test2"
value=""
onblur="if(!/^[А-Я][а-я]*/.test(this.value)) {alert('Неверный формат ввода'); this.value='';}"
size="37">
Чтобы запретить ввод не допускаемых символов:
<input type="text" id="test" name="test"
value=""
onkeyup="if(/[^а-яА-Я\s]/.test(this.value))this.value=this.value.replace(/[^а-яА-Я\s]+/g,'')"
size="37">
Скажите пожалуйста, можно ли объединить эти две проверки, чтобы сразу при вводе удалялись запрещенные символы?
И скажите пожалуйста, на текстовые поля такие как ФИО не принято же ставить маски ввода, да?
на текстовые поля такие как ФИО не принято же ставить маски ввода, да?
Если есть желание - почему не поставить... :)
Например можно запретить ввод цифр (Пётр 1 тогда не прокатит) или запретить английские буквы...
можно ли объединить эти две проверки
Разумеется.
Напиши функцию, которая выполняет оба кода и вызывай её в тех событиях...
Разумеется.
Напиши функцию, которая выполняет оба кода и вызывай её в тех событиях...
Я не много не правильно описала что хочу...
Я хотела узнать, можно ли событие
onblur="if(!/^[А-Я][а-я]*/.test(this.value)) {alert('Неверный формат ввода'); this.value='';}"
переделать в событие onkeyup?
у меня не получается....
Я хотела узнать, можно ли событие
onblur="if(!/^[А-Я][а-я]*/.test(this.value)) {alert('Неверный формат ввода'); this.value='';}"
переделать в событие onkeyup?
у меня не получается....
Дык
onkeyup="if(!/^[А-Я][а-я]*/.test(this.value)) {alert('Неверный формат ввода'); this.value='';}"
ksa, нет:)
чтобы сразу при вводе удалялись запрещенные символы?
то есть на событие onkeyup, мне не нужно выводить alert(), а сразу сделать замену надо недоступного символа на пустое значение как в примере this.value=this.value.replace(), чтобы не допустить ввод запрещенных символов...
Или это очень сложно?
Вот, недоступные символы сразу заменяются, что не так?
<input type="text" id="test" name="test" value="" size="37">
<script>
function replace() {
this.value = this.value.replace(/[^а-яА-Я\s]+/g,'') ;
} ;
document.getElementById("test").onkeyup = replace ;
</script>
:) похоже я совсем не понятно объяснилась...
Hekumok, так Вы же показали тот пример который и так работает.
А мне нужно такую замену написать для шаблона:
^[А-Я][а-я]*
вот это как раз таки и не получается.
Так? Или как? Объясните нормально, что вам нужно, что вы хотите
<input type="text" id="test" name="test" value="" size="37">
<script>
function replace() {
this.value = this.value.replace(/^[А-Я][а-я]*/g,'') ;
} ;
document.getElementById("test").onkeyup = replace ;
</script>
да, так... только пример то не работает, какой бы символ я не ввела - замены не происходит...
Попытаюсь еще раз объяснить:
Данный пример, не позволяет пользователю вводить в текстовое поле ничего кроме русских букв и пробела.
<input type="text" id="test" name="test"
value=""
onkeyup="if(/[^а-яА-Я\s]/.test(this.value))this.value=this.value.replace(/[^а-яА-Я\s]+/g,'')"
size="37">
Мне нужно изменить этот пример так, чтобы пользователь первым символом мог ввести только заглавную русскую букву, а все остальные символы допускается вводить только маленькими русскими или пробел.
Понятно объяснила или опять не очень? :write:
Так что ли?
<input type="text" id="test" name="test" value="" size="37">
<script>
function replace() {
if(this.value.length==1) {
if(/^[^А-ЯЁ]$/.test(this.value)) this.value = "" ;
} else if(/[^а-яё ]/.test(this.value[this.value.length-1])) this.value = this.value.slice(0,-1) ;
} ;
document.getElementById("test").onkeyup = replace ;
</script>
megaupload
02.04.2013, 12:45
Так что ли?
да, именно так!!
да, именно так!!
A ты откуда знаешь?)
Да, супер! То, что нужно!
Hekumok, благодарю Вас!
спасибо, что научили))))))))))
а у меня разрешает ввести почему-то только 1й символ и все((
Предложу такой вариант...
<input type="text" id="test" name="test" value="" size="37">
<script>
function replace() {
var val=this.value
if (!/^[А-ЯЁ][а-яё\s]+$/.test(val)) {
this.value=val.replace(/(^[а-яё])|[^А-ЯЁа-яё\s]/g,'');
};
};
document.getElementById("test").onkeyup = replace ;
</script>
Предложу такой вариант... Не понял, но оно всё вводит, даже латиницу...
Предложу такой вариант...
<input id="test" name="test" size="37" oninput="replace(this)">
<script>
function replace(input) {
input.value = input.value.split(/((?:[А-ЯЁ][а-яё]*\s*)+)/, 2)[1] || "";
};
</script>
даже латиницу
У меня не вводит... Сразу удаляет... :blink:
oninput="replace(this)"
Авторша хотела onkeyup... :D
Автор хотела, чтобы не вводились запрещенные символы.
Скажите пожалуйста, можно ли объединить эти две проверки, чтобы сразу при вводе удалялись запрещенные символы?
Хотя автор и упомянула событие keyup, которое в случае ввода с клавиатуры происходит, всё же стоит учитывать, что оно происходит только тогда, когда отпускают клавишу на клавиатуре. Если вы хотите отслеживать ввод, то тут возможны ложные срабатывания... Например, это событие происходит, когда фактически ввод не поменялся (нажали стрелки и пр.) Оно не срабатывает, когда долго зажата клавиша, что-то было выбрано из буфера обмена, или перетянуто в текстовое поле. Автору не важно каким образом был произведён ввод! Автор хотела, чтобы не вводились запрещенные символы вообще, а не то, чтобы не вводились запрещённые символы только если отпустили клавишу.
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot