【问题标题】:How to restrict input in typeaheadbasic yii2 extension如何在 typeaheadbasic yii2 扩展中限制输入
【发布时间】:2016-11-22 13:15:26
【问题描述】:
我正在使用 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],
]);
请给我解决方案。提前谢谢!
【问题讨论】:
标签:
yii
yii2
yii2-advanced-app
yii-extensions
【解决方案1】:
如果您只想允许用户从一组选项中进行选择,为什么不使用Select2。这样,您的用户可以键入以过滤选项并选择其中一个。
【解决方案2】:
我上述问题的替代解决方案如下:
但我不知道这是否是正确/标准的方式..但它对我来说很好:)
这是我的观点: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>");
}
});