2016-11-22 94 views
0

我使用TypeaheadBasic ::构件扩展名自动完成输入,但我想在输入限制。我想只允许包含在数组中的项目。如何限制typeaheadbasic yii2扩展

下面是我的代码。

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], 
       ]); 

请给我的解决方案。感谢提前!

+0

争夺w“选择Repository”部分.http://demos.krajee.com/widget-details/typeahead。 – yafater

回答

1

如果你希望只允许用户从一组选项中进行选择,为什么不使用Select2。通过这种方式,您的用户可以输入以筛选选项并选择其中一个选项。

+0

是的@marche你是对的! –

0

我的上述问题的另一种解决方法是如下:

,但我不知道这是正确的/标准方式或不..但对我来说:)做工精细

这里是我的看法:typeheadbasic扩展

$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>"); 
     } 
    });