いくつかのオプションを含むselect
フィールドがあります。今私はjQueryでそれらのoptions
のうちの1つを選択する必要があります。しかし、選択しなければならないvalue
のoption
しかわからないときにどうすればいいのでしょうか。
以下のHTMLがあります。
<div class="id_100">
<select>
<option value="val1">Val 1</option>
<option value="val2">Val 2</option>
<option value="val3">Val 3</option>
</select>
</div>
値val2
を持つオプションを選択する必要があります。どうすればこれができますか?
これはデモページです: http://jsfiddle.net/9Stxb/ /
値 'val2'のオプションを選択するには、以下のようにします。
$('.id_100 option[value=val2]').attr('selected','selected');
値を選択した後にchange()
イベントを使用してください。ドキュメントから:
内容が変更されずにフィールドがフォーカスを失った場合、イベントは発生しません。イベントを手動でトリガーするには、引数なしで
.change()
を適用します。
$("#select_id").val("val2").change();
より詳しい情報は.change()にあります。
最初にすべての選択を解除し、選択可能なオプションをフィルタリングします。
$('.id_100 option')
.removeAttr('selected')
.filter('[value=val1]')
.attr('selected', true)
<select name="contribution_status_id" id="contribution_status_id" class="form-select">
<option value="1">Completed</option>
<option value="2">Pending</option>
<option value="3">Cancelled</option>
<option value="4">Failed</option>
<option value="5">In Progress</option>
<option value="6">Overdue</option>
<option value="7">Refunded</option>
値による保留状況への設定
$('#contribution_status_id').val("2");
私のために次の仕事をしました
$("div.id_100").val("val2").change();
最も簡単な方法はval()を設定することを選択することだと思いますが、次のことを確認できます。を参照してくださいjQueryでselectおよびoptionタグを処理するにはどうすればいいですか?オプションの詳細については。
$('div.id_100 option[value="val2"]').prop("selected", true);
$('id_100').val('val2');
最適化されていませんが、次のロジックも場合によっては便利です。
$('.id_100 option').each(function() {
if($(this).val() == 'val2') {
$(this).prop("selected", true);
}
});
属性セレクタ[attributename=optionalvalue]
を使用して任意の属性とその値を選択できます。したがって、この場合はオプションを選択して選択した属性を設定できます。
$("div.id_100 > select > option[value=" + value + "]").prop("selected",true);
ここでvalue
はあなたが選択したい値です。
以前に選択した値を削除する必要がある場合、これが複数回使用されている場合のように、最初に選択した属性を削除するように少し変更する必要があります。
$("div.id_100 option:selected").prop("selected",false);
$("div.id_100 option[value=" + value + "]")
.prop("selected",true);
簡単な答えは、HTMLでです。
<select name="ukuran" id="idUkuran">
<option value="1000">pilih ukuran</option>
<option value="11">M</option>
<option value="12">L</option>
<option value="13">XL</option>
</select>
jqueryでは、ボタンなどで下記の関数を呼び出します。
$('#idUkuran').val(11).change();
それは単純で、100%うまくいっています、私の仕事からそれを取って...
最も簡単な方法は次のとおりです。
<select name="dept">
<option value="">Which department does this doctor belong to?</option>
<option value="1">Orthopaedics</option>
<option value="2">Pathology</option>
<option value="3">ENT</option>
</select>
$('select[name="dept"]').val('3');
出力:これは _ ent _ をアクティブにします。
$('#graphtype option[value=""]').prop("selected", true);
これは#graphtype
がselectタグのidの場合にうまく機能します。
選択タグの例:
<select name="site" id="site" class="form-control" onchange="getgraph1(this.options[this.selectedIndex].value);">
<option value="" selected>Site</option>
<option value="sitea">SiteA</option>
<option value="siteb">SiteB</option>
</select>
つかいます:
$("div.id_100 > select > option[value=" + value + "]").attr("selected",true);
これは私のために働きます。私はこのコードをfancyboxの更新フォームで値を解析するために使っています。そしてapp.jsからの私の完全な情報源は次のとおりです。
jQuery(".fancybox-btn-upd").click(function(){
var ebid = jQuery(this).val();
jQuery.ajax({
type: "POST",
url: js_base_url+"manajemen_cms/get_ebook_data",
data: {ebookid:ebid},
success: function(transport){
var re = jQuery.parseJSON(transport);
jQuery("#upd-kategori option[value="+re['kategori']+"]").attr('selected',true);
document.getElementById("upd-nama").setAttribute('value',re['judul']);
document.getElementById("upd-penerbit").setAttribute('value',re['penerbit']);
document.getElementById("upd-tahun").setAttribute('value',re['terbit']);
document.getElementById("upd-halaman").setAttribute('value',re['halaman']);
document.getElementById("upd-bahasa").setAttribute('value',re['bahasa']);
var content = jQuery("#fancybox-form-upd").html();
jQuery.fancybox({
type: 'ajax',
prevEffect: 'none',
nextEffect: 'none',
closeBtn: true,
content: content,
helpers: {
title: {
type: 'inside'
}
}
});
}
});
});
そして私のPHPコードは:
function get_ebook_data()
{
$ebkid = $this->input->post('ebookid');
$rs = $this->mod_manajemen->get_ebook_detail($ebkid);
$hasil['id'] = $ebkid;
foreach ($rs as $row) {
$hasil['judul'] = $row->ebook_judul;
$hasil['kategori'] = $row->ebook_cat_id;
$hasil['penerbit'] = $row->ebook_penerbit;
$hasil['terbit'] = $row->ebook_terbit;
$hasil['halaman'] = $row->ebook_halaman;
$hasil['bahasa'] = $row->ebook_bahasa;
$hasil['format'] = $row->ebook_format;
}
$this->output->set_output(json_encode($hasil));
}
var opt = new Option(name, id);
$("#selectboxName").append(opt);
opt.setAttribute("selected","selected");
これを覆す理由はありません、あなたがしているのは、プロパティにアクセスして設定することだけです。それでおしまい。
さて、それでいくつかの基本的なdom: もしあなたがまっすぐなJavaScriptでこれをしていたら、それはあなたがこうするだろう
window.document.getElementById('my_stuff').selectedIndex = 4;
しかし、あなたは単純なJavaScriptでそれをしているのではなく、あなたはjQueryを使ってそれをしています。そしてjQueryでは、プロパティを設定するために.prop()関数を使いたいので、次のようにします。
$("#my_stuff").prop('selectedIndex', 4);
とにかく、あなたのIDが一意であることを確認してください。そうでなければ、なぜこれがうまくいかなかったのか疑問に思って壁に頭をぶつけているでしょう。
.attr()は古いjQueryバージョンでは動作しないことがありますが、 .prop() :を使用できます
$('select#ddlCountry option').each(function () {
if ($(this).text().toLowerCase() == co.toLowerCase()) {
$(this).prop('selected','selected');
return;
}
});
これは Select Control に対して確実に機能します。
$('select#ddlCountry option').each(function () {
if ($(this).text().toLowerCase() == co.toLowerCase()) {
this.selected = true;
return;
} });
古い投稿ですが、これはjQueryプラグインのように振る舞う1つの単純な関数です。
$.fn.selectOption = function(val){
this.val(val)
.find('option')
.removeAttr('selected')
.parent()
.find('option[value="'+ val +'"]')
.attr('selected', 'selected')
.parent()
.trigger('change');
return this;
};
あなたはただこんなに簡単なことをすることができます:
$('.id_100').selectOption('val2');
これを使用する理由は、あなたが選択したサマントをDOMに変更してクロスブラウザをサポートしているからです。
基本的な人間行動シミュレーションです。
このコードを入れるだけです:
$("#Controls_ID").val(value);
これを試して。 シンプルだが効果的なjavaScript + jQueryの致命的なコンボ。
SelectComponent:
<select id="YourSelectComponentID">
<option value="0">Apple</option>
<option value="2">Banana</option>
<option value="3">Cat</option>
<option value="4">Dolphin</option>
</select>
選択:
document.getElementById("YourSelectComponentID").value = 4;
今すぐあなたのオプション4が選択されます。これを実行して、デフォルトで起動時に値を選択できます。
$(function(){
document.getElementById("YourSelectComponentID").value = 4;
});
または単純な関数を作成してその中に行を入れ、anyEventでその関数を呼び出してオプションを選択する
JQuery + javaScriptの混在は魔法をやる。
case sensative
なので、HTMLで定義したオプションにある値と同じである必要があります。次のように選択ボックスを動的に変更できます。$("div#YOUR_ID").val(VALUE_CHANGED).change();
//value must present in options you selected otherwise it will not work
値がIDで、テキストがコードであるときに私が遭遇した問題。コードを使用して値を設定することはできませんが、IDに直接アクセスすることはできません。
var value;
$("#selectorId > option").each(function () {
if ("SOMECODE" === $(this).text()) {
value = $(this).val();
}
});
... Do work here...
これはうまくいきます
jQuery('.id_100').change(function(){
var value = jQuery('.id_100').val(); //it gets you the value of selected option
console.log(value); // you can see your sected values in console, Eg 1,2,3
});
最善の方法は次のとおりです。
$(`#YourSelect option[value='${YourValue}']`).prop('selected', true);
コントロールが静的なHTMLページ内にあるのではなく動的に作成された場合、選択ドロップダウンコントロールが動的に変更されないという問題があるようです。
JQueryでは、この解決策は私にとって役に立ちました。
$('#editAddMake').val(result.data.make_id);
$('#editAddMake').selectmenu('refresh');
2行目のない1行目のコードの補遺と同様に、実際には透過的に機能していました。インデックスを設定した後で選択されたインデックスを取得することは正しいです。コントロールの最上位ラベルにあります。
お役に立てれば。