我有一个select
字段,其中包含一些选项。现在我需要用jQuery选择其中一个options
。但是,如果我只知道必须选择value
的{{1}},我该怎么办呢?
我有以下HTML:
option
我需要选择值为<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>
的选项。怎么办呢?
这是一个演示页面: http://jsfiddle.net/9Stxb/
答案 0 :(得分:1332)
答案 1 :(得分:365)
选择值为'val2'的选项:
$('.id_100 option[value=val2]').attr('selected','selected');
答案 2 :(得分:248)
选择值后使用var loginButton: FBSDKLoginButton = FBSDKLoginButton()
loginButton.center = self.view.center
loginButton.delegate = self
self.view.addSubview(loginButton)
事件。来自文档:
如果在没有更改内容的情况下该字段失去焦点,则不会触发该事件。要手动触发事件,请在不带参数的情况下应用
change()
:
.change()
更多信息位于 .change() 。
答案 3 :(得分:45)
取消全部选择并过滤可选择的选项:
$('.id_100 option')
.removeAttr('selected')
.filter('[value=val1]')
.attr('selected', true)
答案 4 :(得分:40)
<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");
答案 5 :(得分:34)
对我而言,以下工作
$("div.id_100").val("val2").change();
答案 6 :(得分:24)
我认为最简单的方法是选择设置val(),但您可以检查以下内容。有关选项的详细信息,请参阅 How to handle select and option tag in jQuery? 。
$('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);
}
});
答案 7 :(得分:17)
您可以使用属性选择器[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);
答案 8 :(得分:13)
一个简单的答案是, 在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%有效,因为它取自我的工作...... :)
希望对它有所帮助..
答案 9 :(得分:11)
最简单的方法是:
<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 。
答案 10 :(得分:11)
设置选择值后,最好使用change()
。
$("div.id_100 select").val("val2").change();
通过这样做,代码将接近用户更改选择,解释包含在JS Fiddle中:
答案 11 :(得分:10)
$('#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>
答案 12 :(得分:9)
没有理由去讨论这个问题,你所做的只是访问和设置一个属性。就是这样。
好的,所以一些基本的dom: 如果你是用直接的JavaScript做这个,你会这样:
window.document.getElementById('my_stuff').selectedIndex = 4;
但你不是用直接的JavaScript做的,而是用jQuery做的。在jQuery中,你想使用.prop()函数来设置属性,所以你会这样做:
$("#my_stuff").prop('selectedIndex', 4);
无论如何,只需确保您的ID是唯一的。否则,你会在墙上撞到脑袋,想知道为什么这不起作用。
答案 13 :(得分:8)
您可以使用不同的方法来实现:
(请记住,如果要操作元素,最好给它一个id或类,而不是让它的父元素一个id或类。)
这里,
由于div中有一个针对其内部选择的类,因此代码如下:
$("div.id_100 select").val("val2");
或
$('div.id_100 option[value="val2"]').prop("selected", true);
如果可以选择该类,则代码为:
$(".id_100").val("val2");
或
$('.id_100 option[value=val2]').attr('selected','selected');
或
$('.id_100 option')
.removeAttr('selected')
.filter('[value=val1]')
.attr('selected', true);
要动态传递值,代码将为:
valu =“ val2”;
$("div.id_100 select").val(valu);
$("div.id_100 > select > option[value=" + valu + "]").prop("selected",true);
如果通过ajax添加元素,
您必须将'id'赋予元素并使用
window.document.getElementById
其他
您将必须为元素添加“类”并使用
window.document.getElementById
还可以通过索引号选择元素的值。
如果您为选择元素指定了ID,则代码为:
window.document.getElementById('select_element').selectedIndex = 4;
请记住,当您如上所述更改选择值时,不会调用change方法。
也就是说,如果您已经编写了代码来对select进行更改,那么上述方法将更改select值,但不会触发更改。
要触发更改功能,您必须在末尾添加.change()。
因此代码将是:
$("#select_id").val("val2").change();
答案 14 :(得分:8)
var opt = new Option(name, id);
$("#selectboxName").append(opt);
opt.setAttribute("selected","selected");
答案 15 :(得分:8)
使用:
$("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));
}
答案 16 :(得分:7)
.attr()有时在较旧的jQuery版本中不起作用,但您可以使用 .prop():
{{1}}
答案 17 :(得分:6)
来源Link
使用 val() jQuery方法进行 单 和 多值 选择在DropDown中
$(function () {
$("button").click(function () {
$("#myDropDownSingle").val('5');
$("#myDropDownMultiple").val(['5', '4', '8']);
});
});
HTML
<p>
<h5>Single Selection</h5>
<select id="myDropDownSingle" class="form-control">
<option value="0">Select Value 0</option>
<option value="8">Option value 8</option>
<option value="5">Option value 5</option>
<option value="4">Option value 4</option>
</select>
</p>
<p>
<h5>Multiple Selection</h5>
<select id="myDropDownMultiple" class="form-control" multiple>
<option value="0">Select Value 0</option>
<option value="8">Option value 8</option>
<option value="5">Option value 5</option>
<option value="4">Option value 4</option>
</select>
</p>
<p>
<button>Get Value and Text on Button Click</button>
</p>
答案 18 :(得分:4)
这确实适用于选择控制:
var textarray = [
"\"Message\"<br><span style = 'color: #bbb;'>Example</span>"
];
答案 19 :(得分:4)
对我有用
$("#id_100").val("val2");
答案 20 :(得分:3)
试试这个。 简单而有效的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的混合物带来了魔力......
答案 21 :(得分:3)
是旧帖子,但这里是一个简单的函数,就像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,并且还会触发更改,你可以捕获它。
是基本的人体动作模拟。
答案 22 :(得分:3)
只需输入此代码:
$("#Controls_ID").val(value);
答案 23 :(得分:2)
最好的方法是这样的:
$(`#YourSelect option[value='${YourValue}']`).prop('selected', true);
答案 24 :(得分:2)
case sensative
。您可以按以下方式动态更改选择框, $("div#YOUR_ID").val(VALUE_CHANGED).change();
//value must present in options you selected otherwise it will not work
答案 25 :(得分:2)
这里有很多解决方案可以更改所选值,但没有一个对我有用,因为我的挑战与 OP 略有不同。我需要根据此值过滤另一个选择下拉列表。
大多数人使用 $("div.id_100").val("val2").change();
让它为他们工作。我不得不将其稍微修改为 $("div#idOfDiv select").val("val2").trigger("change")
。
这还不够,我还必须确保我等待文档加载。我的完整代码如下所示:
$(document).ready(function() {
$("div#idOfDiv select").val("val2").trigger("change");
});
我希望这能帮助那些和我有同样挑战的人!
答案 26 :(得分:0)
此工作良好
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
});
答案 27 :(得分:0)
当动态创建控件而不是将它们放置在静态HTML页面中时,选择下拉列表控件不会动态更改似乎存在问题。
在jQuery中,此解决方案对我有用。
$('#editAddMake').val(result.data.make_id);
$('#editAddMake').selectmenu('refresh');
就像附录一样,第一行代码没有第二行,实际上是透明的,在设置索引后,检索选定的索引是正确的;如果您实际上单击了控件,它将显示正确的项目,但这没有不会反映在控件的顶部标签中。
希望这会有所帮助。
答案 28 :(得分:0)
当值是ID且文本是代码时,我遇到了一个问题。您无法使用代码设置值,但无法直接访问ID。
var value;
$("#selectorId > option").each(function () {
if ("SOMECODE" === $(this).text()) {
value = $(this).val();
}
});
//Do work here
答案 29 :(得分:0)
我需要选择一个选项,但两个选项可能具有相同的值。
这纯粹是为了视觉(前端)差异。
您可以像这样选择一个选项(即使 2 个具有相同的值):
let options = $('#id_100 option')
options.prop('selected', false) // Deselect all currently selected ones
let option = $(options[0]) // Select option from the list
option.prop('selected', true)
option.parent().change() // Find the <select> element and call the change() event.
这会取消选择所有当前选定的 <option>
元素。选择第一个(使用 options[0]
)并使用 <select>
事件更新 change
元素。