如何在依赖于另一个字段的文本框上绑定动态屏蔽格式

时间:2015-10-02 12:30:39

标签: jquery css yii2-advanced-app

我正在使用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

现在我不知道如何制作文本框的依赖掩码格式。请帮忙。

2 个答案:

答案 0 :(得分:1)

我认为如果没有任何类型的AJAX你就不能这样做,PHP在执行时在服务器上运行,所以你不能在没有其他编程的情况下有条件地更改掩码。

答案 1 :(得分:1)

我在这里找到解决方案。使用Php不可能提供动态屏蔽。所以我使用javascript。

  1. 首先将'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>
    

  2. 在视图页面上绑定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]);

  3. 在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);
    

    });

  4. 通过这种动态掩蔽可以应用。