按值设置选择选项“已选择”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按值设置选择选项“已选择”相关的知识,希望对你有一定的参考价值。
我有一个select
字段,里面有一些选项。现在我需要用jQuery选择其中一个options
。但是,当我只知道必须选择的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/
有一种更简单的方法,不需要你进入options标签:
$("div.id_100 select").val("val2");
看看这个jQuery method。
设置选择值后最好使用change()
。
$("div.id_100 select").val("val2").change();
通过这样做,代码将接近用户更改选择,解释包含在JS Fiddle中:
最简单的方法是:
HTML
<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>
jQuery
$('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>
没有理由去讨论这个问题,你所做的只是访问和设置一个属性。而已。
好吧,所以一些基本的dom:如果你是用直接的javascript做这个,你会这样:
window.document.getElementById('my_stuff').selectedIndex = 4;
但你不是用直接的JavaScript做的,而是用jQuery做的。在jQuery中,您希望使用.prop()函数来设置属性,因此您可以这样做:
$("#my_stuff").prop('selectedIndex', 4);
无论如何,只要确保你的id是唯一的。否则,你会在墙上撞到脑袋,想知道为什么这不起作用。
var opt = new Option(name, id);
$("#selectboxName").append(opt);
opt.setAttribute("selected","selected");
使用:
$("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));
}
.attr()有时在较旧的jQuery版本中不起作用,但您可以使用.prop():
$('select#ddlCountry option').each(function () {
if ($(this).text().toLowerCase() == co.toLowerCase()) {
$(this).prop('selected','selected');
return;
}
});
最好的方法是这样的:
$(`#YourSelect option[value='${YourValue}']`).prop('selected', true);
这适用于Select Control:
$('select#ddlCountry option').each(function () {
if ($(this).text().toLowerCase() == co.toLowerCase()) {
this.selected = true;
return;
} });
只需输入此代码:
$("#Controls_ID").val(value);
要选择值为“val2”的选项:
$('.id_100 option[value=val2]').attr('selected','selected');
试试这个。简单而有效的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的混合物带来了魔力....
是旧的帖子,但这里是一个简单的功能,像jQuery插件。
$.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');
Reson为什么要使用这个是因为你将选择的satemant更改为DOM什么是crossbrowser支持,并且还会触发更改,你可以捕获它。
基本上是人体动作模拟。
- 您必须牢记要动态更改的值,必须与您在HTML中定义的选项中存在的值相同,因为它是
case sensative
。您可以动态更改选择框,如下所示,
$("div#YOUR_ID").val(VALUE_CHANGED).change();
//value must present in options you selected otherwise it will not work
这很好用
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
});
在动态创建控件而不是在静态HTML页面中时,选择下拉控件似乎没有动态更改的问题。
在jQuery中,这个解决方案对我有用。
$('#editAddMake').val(result.data.make_id);
$('#editAddMake').selectmenu('refresh');
就像一个没有第二行的第一行代码的附录,确实透明地工作,在设置索引后检索选定的索引是正确的,如果你实际点击了控件它将显示正确的项目,但这并没有反映出来在控件的顶部标签中。
希望这可以帮助。
当值是ID并且文本是代码时遇到的问题。您无法使用代码设置值,但无法直接访问ID。
var value;
$("#selectorId > option").each(function () {
if ("SOMECODE" === $(this).text()) {
value = $(this).val();
}
});
... Do work here...