以下のように、Boostrap Multiselectプラグイン( http://davidstutz.de/bootstrap-multiselect/ )を使用して複数選択ドロップダウンを作成しています
<select id="data" name="data" class="data" multiple="multiple">
<option value="100">foo</option>
<option value="101">bar</option>
<option value="102">bat</option>
<option value="103">baz</option>
</select>
ページのロード時に、[101,102]のような値の配列を取得します。配列を反復処理し、値を選択する必要があります(IDに対応するチェックボックスをオンにする必要があります)。助けてください。
回答ありがとうございます。
すべての回答をガイドラインとして、以下のコードで問題を解決しました。
var valArr = [101,102];
i = 0, size = valArr.length;
for(i; i < size; i++){
$("#data").multiselect("widget").find(":checkbox[value='"+valArr[i]+"']").attr("checked","checked");
$("#data option[value='" + valArr[i] + "']").attr("selected", 1);
$("#data").multiselect("refresh");
}
あなたのすべてのサポートにもう一度感謝します。
//Do it simple
var data="1,2,3,4";
//Make an array
var dataarray=data.split(",");
// Set the value
$("#multiselectbox").val(dataarray);
// Then refresh
$("#multiselectbox").multiselect("refresh");
これは次のように単純であるはずです。
<select id='multipleSelect' multiple='multiple'>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<script type='text/javascript'>
$('#multipleSelect').val(['1', '2']);
</script>
私のフィドルを確認してください: https://jsfiddle.net/luthrayatin/jaLygLzo/
var valArr = [101,102], // array of option values
i = 0, size = valArr.length, // index and array size declared here to avoid overhead
$options = $('#data option'); // options cached here to avoid overhead of fetching inside loop
// run the loop only for the given values
for(i; i < size; i++){
// filter the options with the specific value and select them
$options.filter('[value="'+valArr[i]+'"]').prop('selected', true);
}
そのコードは役立つはずです:
var selected=[101,103];
var obj=$('#data');
for (var i in selected) {
var val=selected[i];
console.log(val);
obj.find('option:[value='+val+']').attr('selected',1);
}
私のためにうまくいく、あなたの要件に応じてIDを変更します。
$("#FormId select#status_id_new").val('');
$("#FormId select#status_id_new").multiselect("refresh");
pHP配列から複数選択へ...
$PHP_array=array(); // create array anyway you need to in PHP
array_Push($PHP_array,20); // Single ID values
array_Push($PHP_array,22);
$javascript_str = json_encode($PHP_array); // JSON ENCODE
//次に、JSスクリプトで
$("#multiselectbox").val(<?php echo $javascript_str; ?>);
// Then refresh
$("#multiselectbox").multiselect("refresh");
var valArr = ["1","2","3"];
/* Below Code Matches current object's (i.e. option) value with the array values */
/* Returns -1 if match not found */
$("select").multiselect("widget").find(":checkbox").each(function(){
if(jQuery.inArray(this.value, valArr) !=-1)
this.click();
});
これにより、値が配列内の値と一致するオプションが選択されます。
公式サイト は、「手動でチェックボックスをオンまたはオフにする」セクションで、click()を使用するために言及しています。
例えば.
$("#ddl_singleSelect")
.multiselect("widget")
.find(":radio[value='']").click(); // change displayed selectedText
$("#ddl_singleSelect option[value='']")
.prop("selected", true) // change val()
.trigger("change"); // fire change event
$("#ddl_multiselect").multiselect("uncheckAll"); // init by de-selecting all
$("#ddl_multiselect")
.multiselect("widget")
.find( ":checkbox[value='1']"
+ ",:checkbox[value='2']"
+ ",:checkbox[value='3']"
+ ",:checkbox[value='4']"
).click(); // change displayed selecetdText
$("#ddl_multiselect")
.find( "option[value='1']"
+ ",option[value='2']"
+ ",option[value='3']"
+ ",option[value='4']"
).prop("selected", true); // change val()
$("#ddl_multiselect").trigger("change"); // fire change event
または HTML で
<select name="example-presets" multiple="multiple" size="5">
<option value="option1" selected="selected">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3" selected="selected">Option 3</option>
<option value="option4" selected="selected">Option 4</option>
<option value="option5" disabled="disabled">Option 5</option>
<option value="option6" disabled="disabled">Option 6</option>
<option value="option7">Option 7</option>
<option value="option8">Option 8</option>
<option value="option9">Option 9</option>
</select>
....
<script type="text/javascript">$("select").multiselect();</script>
jquery-multiselect documentation からより良い解決策を得ました。
var data = [101,102];
$("#data").multiSelect('deselect_all');
$("#data").multiSelect("select",data);
クリックイベントの発生後にチェック済みの小道具も設定することにより、入力要素のクリックイベントを使用してわずかな変更を行う必要がありました。
$(y.Ctrl).multiselect("widget").find(":checkbox").each(function () {
if ($.inArray(this.value, uniqueVals) != -1) {
$(this).click();
$(this).prop('checked', true);
}
});
これは、入力として配列を使用して私から働いたものです。最初にすべてのオプションのチェックを外し、jqueryを使用して選択したオプションをクリックします
var dimensions = ["Dates","Campaigns","Placements"];
$(".input-dimensions").multiselect("uncheckAll");
for( var dim in dimensions) {
$(".input-dimensions").multiselect("widget")
.find(":checkbox[value='" + dimensions[dim] + "']").click();
}
これらの機能がお役に立てば幸いです。
$( '#your-select')。multiSelect( 'select'、String | Array);
$( '#your-select')。multiSelect( 'deselect'、String | Array);
$( '#your-select')。multiSelect( 'select_all');
$( '#your-select')。multiSelect( 'deselect_all');
$( '#your-select')。multiSelect( 'refresh');
このサイトによる参照
これは私のコードサンプルです。複数選択ドロップダウン用のコンマ区切りの数値があり、コンマ区切りの値から複数のオプションを選択します。
var selected_tags_arr = new Array();
var selected_tags = 1,2,4;
selected_tags_arr = selected_tags.split(",");
$('#contact_tags option').each(function (){
var option_val = this.value;
for (var i in selected_tags_arr) {
if(selected_tags_arr[i] == option_val){
$("#contact_tags option[value='" + this.value + "']").attr("selected", 1);
}
}
});
$("#dropDownId").val(["130860","130858"]);
$("#dropDownId").selectmenu('refresh');