За последние 24 часа нас посетили 34130 программистов и 1319 роботов. Сейчас ищет 1041 программист ...

Не работает \yii\widgets\MaskedInput, в чем может быть причина?

Тема в разделе "Yii", создана пользователем Walk, 14 фев 2018.

  1. Walk

    Walk Активный пользователь

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    Необходимо добавить маску-валидации телефона в поле, добавляю в обычном дизайне Yii2 - все работает:

    PHP:
    1.                 <?= $form->field($model, 'subject')->widget(\yii\widgets\MaskedInput::className(), [
    2.                     'mask' => '999-999-9999',
    3.                 ]) ?>
    [​IMG]


    Делаю тоже самое на рабочем дизайне - не работает:

    PHP:
    1.                 <?= $form->field($model, 'phone')->widget(\yii\widgets\MaskedInput::className(), [
    2.                     'mask' => '999-999-9999',
    3.                 ]) ?>
    [​IMG]

    При этом никаких ошибок в консоли нет.

    Сверял подгрузку js-файлов, все также подгружается на рабочем дизайне:

    /assets/26c728d5/jquery.js (+)
    /assets/4ba5c71d/yii.js (+)
    /assets/4ba5c71d/yii.validation.js (+)
    /assets/ccdf817b/jquery.inputmask.bundle.js (+)
    /assets/4ba5c71d/yii.activeForm.js (+)
    /assets/2ab111e0/js/bootstrap.js (+)

    В чем может быть причина?
     
  2. Walk

    Walk Активный пользователь

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    Частично нашел причину - валидация срабатывает только на первой форме на странице. На всех остальных, с такой же маской - не работает.

    Странно...
     
    #2 Walk, 14 фев 2018
    Последнее редактирование: 14 фев 2018
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    что - то с абсолютными путями подключения к библиотекам?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Рабочий дизайн тоже обычным ActiveForm генерится? AJAX-а там часом никакого нет?
    --- Добавлено ---
    Вызовы endPage, endBody стоят где нужно?
     
  5. Walk

    Walk Активный пользователь

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    Проблема была в другом - каждое поле с такой валидацией должно иметь свой уникальный id:

    PHP:
    1.                 <?= $form->field($model, 'phone')->widget(MaskedInput::className(), [
    2.                     'mask' => '+7 (999) 999-99-99',
    3.                     'options' => [
    4.                         'class' => 'form-control',
    5.                         'id' => 'phone1',
    6.                         'placeholder' => ('Контактный телефон')
    7.                     ],
    8.                     'clientOptions' => [
    9.                         'clearIncomplete' => true
    10.                     ]
    11.                 ])->label(false) ?>
    PHP:
    1.                 <?= $form->field($model, 'phone')->widget(MaskedInput::className(), [
    2.                     'mask' => '+7 (999) 999-99-99',
    3.                     'options' => [
    4.                         'class' => 'form-control',
    5.                         'id' => 'phone2',
    6.                         'placeholder' => ('Контактный телефон')
    7.                     ],
    8.                     'clientOptions' => [
    9.                         'clearIncomplete' => true
    10.                     ]
    11.                 ])->label(false) ?>
    PHP:
    1.                 <?= $form->field($model, 'phone')->widget(MaskedInput::className(), [
    2.                     'mask' => '+7 (999) 999-99-99',
    3.                     'options' => [
    4.                         'class' => 'form-control',
    5.                         'id' => 'phone3',
    6.                         'placeholder' => ('Контактный телефон')
    7.                     ],
    8.                     'clientOptions' => [
    9.                         'clearIncomplete' => true
    10.                     ]
    11.                 ])->label(false) ?>
    и так далее
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Логично. Но обычно Yii2 их сам генерит, или у тебя класс модели один и тот же?
     
  7. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    Зачем же на id завязывать? Обойдитесь указанием общего для таких полей класса. Пример.
    Если, конечно, id не нужен для других целей... Сам-то по себе id и так должен быть уникален на странице.
     
  8. Walk

    Walk Активный пользователь

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    Все формы работают с одной таблицей, зачем мне делать разные модели?

    Класс у полей и так один и тот же, без уникального id маска работает только на первом поле.
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Это же Yii, он сам вставляет JS для инициализации MaskedInput, и именно по ID. Поэтому я не всегда пользуюсь виджетами, иногда предпочитаю JS-ку сам написать, как мне удобнее