jQuery - 通过文本描述设置一个选择控件的选择值

我有一个选择控件,在一个javascript变量中我有一个文本字符串。

使用jQuery,我想把选择控件的选定元素设置为具有我所拥有的文本描述的项目(而不是我没有的值)。

我知道通过值来设置它是很琐碎的,例如

$("#my-select").val(myVal);

但我对通过文本描述进行设置感到有些困惑。我想一定有办法从文本描述中获取数值,但我的大脑在周五下午无法解决这个问题。

对该问题的评论 (1)
解决办法

按描述选择适用于jQuery v1.6+

var text1 = 'Two';
$("select option").filter(function() {
  //may want to use $.trim in here
  return $(this).text() == text1;
}).prop('selected', true);

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<select>
  One
  Two
评论(15)

我没有测试过,但这可能对你有用。

$("select#my-select option")
   .each(function() { this.selected = (this.text == myVal); });
评论(0)

试试这个...选择带有文本myText的选项。

$("#my-Select option[text=" + myText +"]").attr("selected","selected");
评论(5)

我是这样做的(jQuery 1.9.1)

$("#my-select").val("Dutch").change();

注。 不要忘了change(),因为这个,我找了很久:)

评论(2)
$("#myselect option:contains('YourTextHere')").val();

将返回包含您的文本描述的第一个选项的值。 经过测试,可以使用。

评论(4)

为了避免所有jQuery版本的复杂化,我真心推荐使用这些非常简单的javascript函数...


function setSelectByValue(eID,val)
{ //Loop through sequentially//
  var ele=document.getElementById(eID);
  for(var ii=0; ii
评论(3)

我知道这是一个老帖子,但我不能让它通过文本选择使用jQuery 1.10.3和上述解决方案。 我最终使用了下面的代码(spoulson'解决方案的变体)。

      var textToSelect = "Hello World";

      $("#myDropDown option").each(function (a, b) {
            if ($(this).html() == textToSelect ) $(this).attr("selected", "selected");
        });

希望能帮到别人。

评论(0)

这条线成功了。

$("#myDropDown option:contains(myText)").attr('selected', true);
评论(0)
 $("#Test").find("option:contains('two')").each(function(){
     if( $(this).text() == 'two' ) {
        $(this).attr("selected","selected");
     }
 });

if语句与"二"做了完全匹配。 和"二三&quot。 将不会被匹配

评论(2)

1.7以上最简单的方法是。

$("#myDropDown option:text=" + myText +"").attr("selected", "selected"); 

1.9+

$("#myDropDown option:text=" + myText +"").prop("selected", "selected"); 

经过测试,工作。

评论(2)

看看【jquery selectedbox插件】[1] 。

selectOptions(value[, clear]): 

按值选择选项,使用字符串作为参数$("#myselect2").selectOptions("Value 1");,或者使用正则表达式$("#myselect2").selectOptions(/^val/i);

你也可以清除已经选择的选项。 $("#myselect2").selectOptions("Value 2", true);

[1]: http://www.texotela.co.uk/code/jquery/select/

评论(0)

这里是非常简单的方法。 请使用它

$("#free").val("y").change();
评论(0)

顺便说一下。 我的选择值没有被设置。 我找遍了整个网络。 事实上,我必须在从一个web服务回调后选择一个值,因为我正从它那里获取数据。

$("#SelectMonth option[value=" + DataFromWebService + "]").attr('selected', 'selected'); 
$("#SelectMonth").selectmenu('refresh', true);

所以选择器的刷新是是我唯一缺少的东西。

评论(1)

我发现,使用attr`````你会在你不想选择的时候最终选择多个选项--解决方案是使用````prop


+ myText +"").prop("selected", "selected");```
评论(0)

我在上面的例子中遇到了一个问题,问题的原因是我的选择框的值是预先填充了6个字符的固定长度的字符串,但是传递进来的参数并不是固定长度的。

我有一个rpad函数,它将右键垫入一个字符串,到指定的长度,并使用指定的字符。 所以,在填充参数后,它就可以工作了。

$('#wsWorkCenter').val(rpad(wsWorkCenter, 6, ' '));

function rpad(pStr, pLen, pPadStr) {
if (pPadStr == '') {pPadStr == ' '};
while (pStr.length < pLen)
    pStr = pStr + pPadStr;
return pStr; 
} 
评论(0)
 $('#theYear').on('change', function () {
 FY = $(this).find('option:selected').text();
 $('#theFolders').each(function () {
     $('option:not(:contains(' + FY + '))', this).hide();
 });
 $('#theFolders').val(0);
});

$('#theYear').on('mousedown', function () {
 $('#theFolders option').show().find('option:contains("Select")', this).attr('selected', 'selected');
});
评论(0)

这里有一个简单的选择。 只需设置你的列表选项,然后将其文本设置为选择值。

$("#ddlScheduleFrequency option").selected(text("Select One..."));
评论(0)

这个公认的答案似乎并不正确,虽然.val('newValue')这个函数是正确的,但试图通过它的名字来检索select对我来说是行不通的,我不得不使用id和类名来获取我的元素。

评论(1)

获取选择框的子项;循环浏览它们;当你找到你想要的那一个时,将其设置为选择的选项;返回false以停止循环。

评论(0)