私は郵便番号のリストを巨大なドロップダウンリストがあります。通常のドロップダウンリストでそれを下にスクロールするのはむしろ難しいので、Select2 jQuery(バージョン4)ドロップダウンを実装するアイデアが出てきました。さて、それの性質とリストのサイズのために、ロードに時間がかかるので、私はいくつかのページネーションを使用して初期リストを50項目に制限し、スクロールまたは検索でそれを展開することができます。最終的に私はページングがajaxの読み込みのために確保されていることを知りました(私が正しくドキュメントを読んでいる場合)。これは避けたいものです。Select2プレースホルダの値を送信
私の現在のオプショングループは、私が(設計で必要とされる)の2つのデータベースのフィールドにプレースホルダdata-name
とdata-postal-number
を挿入していたデータベースでこの
<option data-name="City Name" data-postal-number="11111">City Name [11111]</option>
のように見えます。
私は
Selectセレクトの初期化のためのJSを、次の作成するために管理していますが、正常にデータベースにそれを提出することで設定したプレースホルダ持って管理する方法は考えていません(CodeIgniterの3を使用しますが、問題のためのthatsの関連を疑う)しています$.fn.select2.amd.require(
['select2/data/array', 'select2/utils'],
function (ArrayData, Utils) {
function CustomData($element, options) {
CustomData.__super__.constructor.call(this, $element, options);
}
function contains(str1, str2) {
return new RegExp(str2, "i").test(str1);
}
Utils.Extend(CustomData, ArrayData);
CustomData.prototype.query = function (params, callback) {
if (!("page" in params)) {
params.page = 1;
}
var pageSize = 50;
var results = this.$element.children().map(function(i, elem) {
if (contains(elem.innerText, params.term)) {
return {
id:[elem.innerText, i].join(""),
text:elem.innerText
};
}
});
callback({
results:results.slice((params.page - 1) * pageSize, params.page * pageSize),
pagination:{
more:results.length >= params.page * pageSize
}
});
};
$("#postal_number_selector").select2({
ajax:{},
allowClear:true,
width:"element",
dataAdapter:CustomData
});
});
感謝以上であることについて読むために任意のヘルプまたは情報は、(可能ならば実際のAJAX/JSONの負荷を避けたい...)事前
...と建物のリストは、この 'のように基本的には <?php endforeach; ?> ' –
Kosta