#input #yii2 #masking
#ввод #yii2 #маскирование
Вопрос:
Мне нужно создать ввод для названия компании. Это может быть от 1-4 слов и использовать «». Теперь я могу просто сделать так:
<?= $form->field($model, 'name')->widget(yiiwidgetsMaskedInput::className(),['name' => 'name', 'mask' => ['[A][a]{1,10}[ ][a]{1,10}[ ][a]{1,10}[ ][a]{1,10}']]) ?>
Но прямо сейчас я могу использовать только буквы. Я вижу, что в этом виджете есть $definitions
, но как правильно его использовать?
Попробовав несколько других вариантов, я делаю это следующим образом:
<?= $form->field($model, 'name')->widget(yiiwidgetsMaskedInput::className(),['name' => 'name', 'mask' => '"[A]a"',
'definitions' => [
'a' => [
'validator' => '^[А-ЯЁA-Z] ',
'cardinality' => 50,
]
]]) ?>
Но мне нужна динамическая длина этого определения. Так что теперь в моей области
"Asddasdsa asdnmsadas d asdasd asdsamj______________"
И мне нужно, чтобы он имел динамическую длину, чтобы «символ был после текста
Комментарии:
1. Если вы разрешаете специальные символы, то какой смысл использовать маскированный ввод. Просто используйте текстовое поле с проверкой длины
2. Там должна быть первая заглавная буква, @Nitin
3. Вы можете управлять этим в серверной части, используя функцию php, подобную
ucfirst()
. В MaskedInput вы можете добавитьmask
опцию, которая позволит вам использовать только буквенный символ, цифровой символ и буквенно-цифровой символ . Поэтому лучше использоватьtextfield
иucfirst()
4. @Nitin Мне нужно, чтобы он отображался при вводе имени
Ответ №1:
Если вы хотите отображать первую букву в верхнем регистре при вводе текста, используйте функцию jQuery следующим образом
$("#your-field-id").keyup(
function () {
this.value = this.value.substr(0, 1).toUpperCase() this.value.substr(1).toLowerCase();
}
);
Комментарии:
1. Мне нужно использовать мою маску, потому что там также есть кавычки