#javascript #jquery #regex
#javascript #jquery #регулярное выражение
Вопрос:
Каков был бы правильный способ выполнить следующее:
Поле ввода для заголовка
Поле ввода для имени пользователя
Правила использования имени пользователя: от 1 до 20 буквенно-цифровых символов, включая подчеркивание («_»), в нижнем регистре
Когда пользователь вводит заголовок типа:
- Привет, мир
- Группа пиццы
- Сумасшедшие !@#!@#!#!# *
поле имени пользователя динамически обновляется по мере того, как пользователь вводит заголовок, форматируя заголовок в соответствии с правилами имени пользователя?
Нужно ли мне какое-то нажатие клавиши с регулярным выражением? Идеи? Спасибо
Ответ №1:
Вы можете выполнить замену регулярных выражений чистым JS. Вы можете использовать jQuery для привязки к событию нажатия клавиши (или любому другому, которое вы пожелаете). Надеюсь, это поможет.
$("#inputfld").keypress(function() {
var fldval = $('#inputfld').val();
$('#inputfld').val(fldval.replace(/[^a-zA-Z0-9_] /g,''));
});
Ответ №2:
Следующее удаляет символы, которые не разрешены, и ставит подчеркивания вместо пробелов.
$(function() {
$("#title").keyup(function() {
$("#username").val( $(this).val().replace(/[^A-Za-z0-9_ ]/g,"")
.replace(/ /g, "_") );
});
});
Обратите внимание, что (возможно, зависит от браузера), если вы используете keypress
.val()
, символ из только что нажатой клавиши не будет включен, поэтому два поля будут немного не синхронизированы. С keyup
они останутся синхронизированными, если вы не будете удерживать клавишу нажатой и не дадите ей повториться (хотя, я думаю, вы могли бы перехватить нажатие клавиш, чтобы справиться с этим). и