私はYii2 kartikウィジェットを使用して2つのselect2 ajaxの読み込みドロップダウンリストを使用しています。最初のドロップダウンの選択を変更しながら、2番目のドロップダウンの選択を変更する必要があります。Yii2 select2 ajaxドロップダウンロード
最初のドロップダウン
<?php
$qtnno = '';
$qtn = ServiceQuotation::find()->where(['UDNO' => $model->QTN_UDNO])->one();
if($qtn != null) $qtnno = $qtn->UDNO;
echo $form->field($model, 'QTN_UDNO')->widget(Select2::classname(), [
'initValueText' => $qtnno, // set the initial display text
'options' => ['placeholder' => 'Search for a Quotation ...',
'onchange'=>'
\t \t $.getJSON("'.Url::toRoute('getqtndetails').'", { id: $("#servicejobcard-qtn_udno").val() })
\t \t .done(function(data) {
\t \t $("#'.Html::getInputId($model, 'QTNNO').'").val(data.qtnno);
\t \t $("#'.Html::getInputId($model, 'QTNDATE').'").val(data.qtndate);
\t \t $("#'.Html::getInputId($model, 'PCODE').'").select2({ data: [{id: data.pcode, text: data.pname}]});;
$("#'.Html::getInputId($model, 'PCODE').'").select2("val",data.pcode);
$("#'.Html::getInputId($model, 'PROJECTNAME').'").val(data.projectname);
\t \t }
\t \t );'
],
'pluginOptions' => [
'allowClear' => true,
'minimumInputLength' => 3,
'ajax' => [
'url' => $urlQtn,
'dataType' => 'json',
'data' => new JsExpression('function(params) { return {q:params.term}; }')
],
'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
'templateResult' => new JsExpression('function(data) { return data.text; }'),
'templateSelection' => new JsExpression('function (data) { return data.text; }'),
],
]);
?>
番目のドロップダウン
<?php
$cusName = empty($model->PCODE) ? '' : Customer::findOne($model->PCODE)->PNAME;
echo $form->field($model, 'PCODE')->widget(Select2::classname(), [
'initValueText' => $cusName, // set the initial display text
'options' => ['placeholder' => 'Search for a Customer ...',
],
'pluginOptions' => [
'allowClear' => true,
'minimumInputLength' => 3,
'ajax' => [
'url' => $url,
'dataType' => 'json',
'data' => new JsExpression('function(params) { return {q:params.term}; }')
],
'escapeMarkup' => new JsExpression('function (markup) { return markup; }'),
'templateResult' => new JsExpression('function(party) { return party.text; }'),
'templateSelection' => new JsExpression('function (party) { return party.text; }'),
],
]);
?>
上記のコードを使用して、2番目のドロップダウンで選択を変更できます。しかし、変更後、私は2番目のドロップダウンで選択することができません。
...
あなたの答えは、別のライブラリが質問は、具体的SELECT2に言及しているという事実にもかかわらず使用することができますassumtionから始まります。質問の制限に関する質問がある場合、質問に答えるのではなく、最初に質問にコメントすることをお勧めします。この場合、select2が使用される理由はいくつかあります。しかし、あなたの答えは適切にフォーマットされています。 – smoksnes
フィードバックありがとうございます。私はその質問にコメントを追加しようとしましたが、評判の欠如が私にそれをさせるのを妨げました。さらに重要なのは、DepDropは別のプラグインですが、ドロップダウンの_タイプ_を生成するオプションがあり、Select2プラグインをサポートしています。 – sm1979
はい、あなたの評判については正しいです。私は評判の部分を考えなかったし、あなたはそれを他の方法でやっていけなかった。私の悪い。あなたはコメントを無視することができます。とにかく、あなたの最初の答えを投稿することを決めたことは素晴らしいことです!これはうまく形成されており、このコードの大きな部分をこの例に含めたことは素晴らしいことです。がんばろう! – smoksnes