Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение - проверка ввода (https://javascript.ru/forum/misc/36919-regulyarnoe-vyrazhenie-proverka-vvoda.html)

Hekumok 02.04.2013 12:00

Так что ли?
<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

Цитата:

Сообщение от Hekumok
Так что ли?

да, именно так!!

Hekumok 02.04.2013 16:55

Цитата:

Сообщение от megaupload
да, именно так!!

A ты откуда знаешь?)

тома 03.04.2013 07:22

Да, супер! То, что нужно!
Hekumok, благодарю Вас!
спасибо, что научили))))))))))

AliceSh 02.02.2019 15:10

а у меня разрешает ввести почему-то только 1й символ и все((

ksa 07.02.2019 15:38

Предложу такой вариант...

<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>

Malleys 07.02.2019 16:11

Цитата:

Сообщение от ksa
Предложу такой вариант...

Не понял, но оно всё вводит, даже латиницу...

Предложу такой вариант...
<input id="test" name="test" size="37" oninput="replace(this)">
<script>
function replace(input) {
	input.value = input.value.split(/((?:[А-ЯЁ][а-яё]*\s*)+)/, 2)[1] || "";
};
</script>

ksa 08.02.2019 07:45

Цитата:

Сообщение от Malleys
даже латиницу

У меня не вводит... Сразу удаляет... :blink:

ksa 08.02.2019 07:47

Цитата:

Сообщение от Malleys
oninput="replace(this)"

Авторша хотела onkeyup... :D

Malleys 08.02.2019 11:50

Автор хотела, чтобы не вводились запрещенные символы.
Цитата:

Сообщение от тома
Скажите пожалуйста, можно ли объединить эти две проверки, чтобы сразу при вводе удалялись запрещенные символы?

Хотя автор и упомянула событие keyup, которое в случае ввода с клавиатуры происходит, всё же стоит учитывать, что оно происходит только тогда, когда отпускают клавишу на клавиатуре. Если вы хотите отслеживать ввод, то тут возможны ложные срабатывания... Например, это событие происходит, когда фактически ввод не поменялся (нажали стрелки и пр.) Оно не срабатывает, когда долго зажата клавиша, что-то было выбрано из буфера обмена, или перетянуто в текстовое поле. Автору не важно каким образом был произведён ввод! Автор хотела, чтобы не вводились запрещенные символы вообще, а не то, чтобы не вводились запрещённые символы только если отпустили клавишу.


Часовой пояс GMT +3, время: 21:26.