Yii. Маска ввода. Поле CMaskedTextField

CMaskedTextField генерирует текстовое поле с маской ввода. Это поле помогает пользователю вводить данные, соответствующие необходимому формату данных.
Виджет реализован на основе JQuery-плагина http://digitalbush.com/projects/masked-input-plugin.

Вызов осуществляется следующим образом.
<?php
$this->widget('CMaskedTextField', array(
'model' => $model,// модель
'attribute' => 'aluguel', // атрибут модели
'mask' => '9.999,99', // маска ввода
'htmlOptions' => array('size' => 6)
));
?>
Маска ввода (параметр mask) представляет из себя строку, состоящую из спецсимволов. Следующие символы являются предопределенными:
  • a: трактуется как буквенный символ из диапазона (A-Z,a-z)
  • 9: трактуется как числовой символ (0-9)
  • *: трактуется как алфавитно-цифровой символ (A-Z,a-z,0-9)
  • ?: все, что идет после этого символа, является необязательным для ввода со стороны пользователя.
Дополнительные символы могут быть определены путем указания свойства charMap. Это свойство представляет из себя массив сопоставления символов маски и соответствующих шаблонов. Например, array('~'=>'[+-]') определяет, что символ ~ ожидает ввода + или -.
<?php
$this-<widget('CMaskedTextField', array(
'model' => $model,
'attribute' => 'aluguel',
'mask' => '9.999,99',
'charMap' => array('.'=>'[\.]' , ','=>'[,]'),
'htmlOptions' => array('size' => 6)));
?>

Комментарии

  1. Отличный блог, пишите ещё, у вас очень хорошо получается.

    ОтветитьУдалить
  2. Статья понятная и очень к месту, спасибо!

    ОтветитьУдалить
  3. я немного не понял, как задать маску, что бы например код страны мог быть как из 1 так и из 2 цифр, и что бы код города тоже мог иметь переменное число чисел?

    ОтветитьУдалить
    Ответы
    1. В таком случае вам нужно самому наваять скрипт для валидации поля по маске. Т.к. стандартный плагин понимает лишь конкретно заданную маску.
      Как-то делала подобное для того, чтобы поле с маской для телефона в формате 999-999-9999 при вводе первых цифр, которые соответствовали бы коду города, принимало маску (код города) 99-99-99. Вот такое бредовое было пожелание у заказчика

      Удалить
    2. Кстати, как понимаю, вам нужна валидация номера телефона - проще это реализовать регуляркой

      Удалить
  4. Огромное спасибо. Очень помогло))

    ОтветитьУдалить

Отправить комментарий

Популярные сообщения