Я хотел бы объединить выпадающий список для Country с ajax, заполненным Typeahead для State, но я изо всех сил. Я использую виджет kartik typeahead для Yii2. Я пытался уничтожить экземпляр и воссоздать его, однако он не заполняется данными, см. Ниже.
<?php //country field
$datacountry = \app\helper\countries::getCountries();
echo $form->field($client, 'country')->dropDownList($datacountry, ['prompt' => '-Choose a Country-',
'onchange' => '$("#county").val("");
$.post( "' . Url::to(['/state-search?country=']) . '"+$(this).val(), function( data ) {
$("#county").typeahead("destroy");
$("#county").typeahead({local: JSON.parse(data)});
});
']);
?>
<?phpecho $form->field($client, 'county')->widget(kartik\typeahead\Typeahead::className(), [
'options' => ['placeholder' => 'Filter as you type ...','id'=>'county'],
'dataset' => [
[
'local' => [''],
'limit' => 10,
'datumTokenizer' => "Bloodhound.tokenizers.obj.whitespace('value')",
'cache' => false,
'display' => 'value',
'templates' => [
'suggestion' => new JsExpression("Handlebars.compile('{$template}')")
]
]
],
]);
?>
В качестве альтернативы я могу передать переменную js в удаленный API для ищейку?
'remote' => [
'url' => Url::to(['county-search']) . '?q=%QUERY',
'wildcard' => '%QUERY'
],
например
new JsExpression('$("#client-country").val()')
Может быть, вы должны использовать выбор2 виджет? Там вы можете увидеть некоторые демонстрации http://demos.krajee.com/widget-details/select2
Других решений пока нет …