我正在使用 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],
]);
请给我解决方案。谢谢你!
答案 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>");
}
});