JQuery 设置下拉列表框已选中选项 - 不是按值,而是按显示文本
JQuery set dropdown list box selected option - not by value, but by display text
这可能已经回答了,但我无法在任何地方找到答案......
假设我们有以下 HTML...
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Dropdown Test</title>
</head>
<body>
<select name="myDropDownListName" id="myDropDownListID" class="dropdown">
<option selected="selected" value="0">Please select a value...</option>
<option value="1">My Custom Value 1</option>
<option value="2">My Custom Value 2</option>
<option value="3">My Custom Value 3</option>
</select>
</body>
</html>
假设我不知道索引"值"值,并且只能通过文本"我的自定义值 2"来标识项目,JQuery 命令将"我的自定义值 2"设置为下拉列表框中当前选定的选项会是什么样子?
你可以使用 jquery .filter():
$('#myDropDownListID option').filter(function() {
//you can use this.innerText too
return $(this).text() === 'My Custom Value 2';
}).prop('selected', true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="myDropDownListName" id="myDropDownListID" class="dropdown">
<option selected="selected" value="0">Please select a value...</option>
<option value="1">My Custom Value 1</option>
<option value="2">My Custom Value 2</option>
<option value="3">My Custom Value 3</option>
</select>
简单地像这样:
$('select').val($("select option:contains('My custom Value 2')").val());
另一种方式...使用包含选择器按内容搜索 DOM 选项。
$('select>option:contains("My Custom Value 2")').prop('selected', true);
人们喜欢说使用 .val()
,但正如您所注意到的,它不喜欢通过文本设置,而是通过使用索引来设置。所以你应该做一个find
来获得它,然后由它设置。但即便如此,也只是故事的一部分。应首先取消选择所有其他选项,并使用找到的索引将所需选项的属性设置为selected
。
顺便说一句,我讨厌$('#myDropDownListID')
语法,因为它在 SharePoint 中毫无用处,因为它自动生成 GUID 并将它们放在 ID 之后,迫使您不得不用 $('[id*=myDropDownListID]')
抓取它,*
表示它contains
该值,所以这就是我将如何设置它,除了我会省略*
,因为在这种情况下它是不必要的。但是如果你想使用$
而不是*
来说它starts with
该值,这种语法也非常有用,你可以使用title
或name
而不是id
,所以它是令人难以置信的多功能,我希望更多的人使用它。
$(document).ready(function() {
var yourText = "My Custom Value 2";
// Remove all 'selected' attributes from all options
$('select[id="myDropDownListID"] option').removeAttr('selected');
// Get the index for the value you want to set
var idx = $('select[id="myDropDownListID"] option').filter(function() {
return $(this).html() == yourText;
}).val();
// Set the dropdown value by index and set it as selected by text
var dropdownBox = $('select[id="myDropDownListID"]');
dropdownBox.val(idx);
dropdownBox.find('option[value="' + yourValue + '"]').attr('selected','selected'); // note that .val() doesn't do this
dropdownBox.click(); // may be useful and necessary for certain engines to cache the value appropriately
console.log(dropdownBox.html()); // should show you that the selected option is My Custom Value 2
console.log(dropdownBox.val()); // should give you the index 2
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<select id="myDropDownListID">
<option value="1">My Custom Value 1</option>
<option value="2">My Custom Value 2</option>
<option value="3">My Custom Value 3</option>
</select>
ddlListItems 是 ListBox 的 ID
if ($('#ddlListItems option:selected').text() == 'My Custom Value 2') {
var itemsByValue = $('#ddlListItems option:selected').text();
}
相关文章:
- 为什么在页面上单击的先前链接的文本显示在 AJAX 请求中
- JavaScript NaN错误,输入文本显示为NaN
- 关于socket.io实时文本显示的问题
- 如何使用javascript使文本显示在文本字段中
- 在它们之间切换时,jQuery 文本显示在活动文本下方
- 使用 ajax 乱码文本显示图像
- 带有文本显示js功能的图像映射 - 某些部分不显示
- 来自 Ajax 请求的文本显示不正确
- 如何使用 JavaScript 使文本显示
- 是否可以将元素内部的文本显示在 ::在 css 之前
- on更改文本框的文本显示在另一个文本框上
- 在文本显示在Scroll上之前在页面上隐藏文本的问题
- 使用带文本显示的Jquery切换文本
- 如何使文本显示速度变慢
- 如何将图片添加到点击计数器文本显示<图像><点击量>
- 文本显示有延迟
- 根据在另一个文本框中输入的文本显示文本框中的文本
- 如何从点击文本显示文件浏览器,并在悬停文本时将鼠标光标更改为指针
- 使文本显示为几行可点击的线条
- 如何使文本显示