YII2 MaskedInput: перемещение между полями не выделяет содержимое

Обычно при переходе от поля к другому с помощью клавиши табуляции содержимое поля (если оно присутствует) выделяется, а при нажатии клавиши содержимое поля удаляется, но этого не происходит при использовании Kartik MaskedInput с десятичным полем.

Когда я перемещаю управление в другое поле, курсор перемещается в конце, поэтому я должен использовать клавишу Backspace, чтобы удалить содержимое поля, или использовать мышь, чтобы выделить его.

У меня есть форма с большим количеством полей, поэтому редактирование занимает много времени.

Это мой код:

<?= $form->field($model, 'val_one' , ['template' => '
                      <div class="input-group ">
                      <span class="input-group-addon">
                      FIRST
                      <span class="glyphicon glyphicon-euro"></span>
                      </span>
                      {input}                      
                      </div>
                      {error}{hint}'])->textInput(['maxlength' => true])->label(false)->widget(yii\widgets\MaskedInput::className(),
                                                [
                                               'clientOptions' => [
                                               'alias' => 'decimal',
                                               'groupSeparator' => '.',
                                               'radixPoint' => ',',
                                               'digits' => 2,
                                               'autoGroup' => true,
                                               'removeMaskOnSubmit' => true,
                                               'rightAlign' => false,                                  
                                               ],
                                               'options' => [
                                               'class' => 'form-control',                  
                                               ]                               
                                                 ]) ?>

person gdel    schedule 18.11.2017    source источник


Ответы (1)


Я нашел решение.

Достаточно использовать этот код javascript:

$focus = <<< JS
function getSelect(item) {
if (event.keyCode == 9) {
item.select ();
   };
};
JS;
$this->registerJs($focus, View::POS_END);

и добавьте эту строку в параметры поля формы:

'onkeyup' => 'getSelect($(this))'

Таким образом, при каждом нажатии клавиши табуляции (код 9) выбирается содержимое поля назначения.

person gdel    schedule 26.11.2017