如何限制typeaheadbasic yii2扩展中的输入

时间:2016-11-22 13:15:26

标签: yii yii2 yii2-advanced-app yii-extensions

我正在使用 TypeaheadBasic :: widget 扩展程序进行自动填充,但我想限制输入。我想只允许包含在数组中的项目。

下面是我的代码。

use kartik\typeahead\TypeaheadBasic;
 echo TypeaheadBasic::widget([
      'model' => $model,
      'attribute' => 'client',
      'data' => $clientData,
      'options' => ['placeholder' => 'Filter as you type ...', 'id'=>'client_id_name'],
                    'pluginOptions' => ['highlight' => true],
                ]);
请给我解决方案。谢谢你!

2 个答案:

答案 0 :(得分:1)

如果您只想让用户从一组选项中进行选择,为什么不使用Select2。这样,您的用户可以键入以过滤选项,只需选择其中一个。

答案 1 :(得分:0)

上述问题的替代解决方案如下:

但我不知道这是正确/标准的方式..但它对我来说工作正常:))

这是我的观点:typeheadbasic extension

 $clientData = $my_dynamic_data_arr; // this arr var i used in jquery script for chekcing if name is exists or not
    echo TypeaheadBasic::widget([
                        'model' => $model,
                        'attribute' => 'client',
                        'data' => $clientData,
                        'options' => ['placeholder' => 'Filter as you type ...', 'id' => 'client_profile'],
                        'pluginOptions' => ['highlight' => true],
                    ]);

这是我的jquery脚本来处理上面的问题

 var client_arr = $.makeArray(<?php echo json_encode(array_values($clientData)); ?>); // $clientData is php array variable from above 

    $("#clientProfileForm").submit(function(event) {
        var client_name = $("#client_profile").val();
        if ($.inArray(client_name, client_arr) === -1) {
            $("#clientProfileError").html("<spna style='color:red'>Client not exists</span>");
            return false;
        }
        if ($('#client_profile').val() === '') {
            event.preventDefault();
            $("#clientProfileError").html("<spna style='color:red'>Client name is required</span>");
        }
    });