0
国のドロップダウン・セレクトを組み合わせて、ajaxが実装された州のタイプ・アーヘッドと組み合わせたいが、苦労している。私はYii2のkartikの先行ウィジェットを使用していますが、インスタンスを破棄して再作成しようとしましたが、データをポピュレートしていません。Yii2ドロップダウン・ヴァルとkartik先読みを組み合わせる
<?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)});
});
']);
?>
<?php
echo $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変数をbloodhoundのリモートAPIに渡すことはできますか?
'remote' => [
'url' => Url::to(['county-search']) . '?q=%QUERY',
'wildcard' => '%QUERY'
],
例えば
new JsExpression('$("#client-country").val()')
残念なことに、選択肢にはタイプを自由にすることはできず、あらかじめ定義されたオプションのみを選択することができます。 – ShiftyThomas