配列からデータを読み込んだSelect2(CDN /最新版)を使用しています。 (データはAJAX/JSONを介して取得されることに注意してください。しかし、これは異常な状況のため、配列を介してロードされます)プログラムでIDでなくテキストで値を選択する必要があります。私はこれをIDを介して動作させることができますが、テキストは使用できません。私は手動でできる配列をループし、IDを決定し、IDから選択しますが、私はもっとエレガントな方法があることを前提としています...ここでSelect2のテキスト値を設定する
は、いくつかのコードの断片は...
// Now load all the elements into the array, which comes from AJAX
for (i = 0; i < rowCount; i++) {
myData.push({id: i, text: comp_data.rows[i].NN_NAME});
}
// create my Select2 control
var $mySelectControl = $(".mySelect").select2({
data: myData,
width:300,
placeholder: "Select an account",
allowClear: true
});
です
後で、「Mainstay Electric」をプログラムで選択したいと思っています。私はIDを知っているかどうかを選択できますが、テキストを知っているかどうかを選択する方法は見つけられません。他の質問を検討して
// THIS WORKS
$(".mySelect").val(null).trigger("change");
//.. but not this
$(".mySelect").val('Mainstay Electric').trigger("change");
、私は私が...
$(".mySelect").select2("trigger", "select", {
data: { text: 'Mainstay Electric' }
});
を変更...しかし、これはa.IDが定義されていないJavaScriptエラーを与えるこの例を見つけました。
IDを取得して使用するためにmyData配列をループする以外に、テキスト(つまり 'Mainstay Electric')を渡す方法はありますか?
おかげ
ダニエル - これは動作しますが、私は...私のSELECT2制御は7000人のビジネス名を持っている注意点があると思います。あなたの例では、CONTAINS関数を使用します。これは基本的に部分文字列関数です。私が「ジョーンズ・エレクトリック」を探しているのなら、これは最初にベイカー・ジョーンズ・エレクトリック・コーポレーションのものと一致します。 CONTAINSではなく、EQUALSまたはEXACT MATCH関数がありますか? – user1009073
@ user1009073 [OK]をクリックします。 'getOptId'のような関数を使ってドロップダウンリストを検索し、IDを取得します。これは完全一致です。 –
@ user1009073更新されたコードを見てください。オプション4は最後の2つの類似したオプションです。 –