我正在使用yii2高级应用。现在我有一个下拉菜单和一个文本框。下拉值为Pan No.
,另一个为Driving Licence
当用户选择9999 9999999999
时,屏蔽格式为Pan No.
,99-9999-9999
为<div class="form-group" id="div_document">
<?= $form->field($orderMasterModel, 'document')->dropDownList(['Driving Licence' => 'Driving Licence', 'Pan Card' => 'Pan Card'], ['placeholder' => 'Document']) ?>
</div>
<div class="form-group" id="div_document_no">
<?= $form->field($orderMasterModel, 'pan_no')->widget(\yii\widgets\MaskedInput::className(), [
'mask' => '999-999-9999',
]) ?>
</div>
。
my _form.php
td
现在我不知道如何制作文本框的依赖掩码格式。请帮忙。
答案 0 :(得分:1)
我认为如果没有任何类型的AJAX你就不能这样做,PHP在执行时在服务器上运行,所以你不能在没有其他编程的情况下有条件地更改掩码。
答案 1 :(得分:1)
我在这里找到解决方案。使用Php不可能提供动态屏蔽。所以我使用javascript。
首先将'data-plugin-inputmask'=>"inputmask_b1ea8b87"
放在需要屏蔽的字段中。
<div class="col-md-6">
<div class="form-group" id="div_document_no" style="display: none">
<?= $form->field($orderMasterModel, 'pan_no')->textInput(['placeholder' => 'Document No','data-plugin-inputmask'=>"inputmask_b1ea8b87"]) ?>
</div>
在视图页面上绑定jquery.inputmask.bundle.js。
list(,$mask)=Yii::$app->assetManager->publish('@bower/jquery.inputmask/dist/jquery.inputmask.bundle.js');
$this->registerJsFile($mask,['position' =>View::POS_END]);
在javascript中。
$('#ordermaster-document').on('change', function() {
if(this.value=='Pan Card')
{
var inputmask_b1ea8b87 = {"mask":"a{5}9999A{1}"};
}else{
var inputmask_b1ea8b87 = {"mask":"a{2}99 99999999999"};
}
$("#ordermaster-pan_no").inputmask(inputmask_b1ea8b87);
});
通过这种动态掩蔽可以应用。