使用jquery按文本设置下拉列表值

使用jquery按文本设置下拉列表值,jquery,drop-down-menu,Jquery,Drop Down Menu,我的下拉列表如下: <select id="HowYouKnow" > <option value="1">FRIEND</option> <option value="2">GOOGLE</option> <option value="3">AGENT</option></select> 在上面的下拉列表中,我知道下拉列表的文本。如何使用jquery设置document.ready中文

我的下拉列表如下:

<select id="HowYouKnow" >
  <option value="1">FRIEND</option>
  <option value="2">GOOGLE</option>
  <option value="3">AGENT</option></select>
在上面的下拉列表中,我知道下拉列表的文本。如何使用jquery设置document.ready中文本的下拉列表值

$("#HowYouKnow").val("GOOGLE");

其中XXX是您想要的索引。

这是一种基于选项文本而不是索引的方法。刚刚测试过

var theText = "GOOGLE";
$("#HowYouKnow option:contains(" + theText + ")").attr('selected', 'selected');
或者,如果有类似的值,感谢shanabus:

$("#HowYouKnow option").each(function() {
  if($(this).text() == theText) {
    $(this).attr('selected', 'selected');            
  }                        
});

下面是一个简单的例子:

$("#country_id").change(function(){
    if(this.value.toString() == ""){
        return;
    }
    alert("You just changed country to: " + $("#country_id option:selected").text() + " which carried the value for country_id as: " + this.value.toString());
});

精确匹配使用

    $("#HowYouKnow option").filter(function(index) { return $(this).text() === "GOOGLE"; }).attr('selected', 'selected');

contains将选择最后一个可能不精确的匹配项。

对于GOOGLE、GOOGLEDOWN、GOOGLEUP,即类似的值,您可以在下面的代码中尝试

   $("#HowYouKnow option:contains('GOOGLE')").each(function () {

                        if($(this).html()=='GOOGLE'){
                            $(this).attr('selected', 'selected');
                        }
                    });

这样,循环迭代的次数可以减少,并且在所有情况下都可以工作。

下面的代码适用于我-:

jQuery('[id^=select_] > option').each(function(){
        if (this.text.toLowerCase()=='text'){
            jQuery('[id^=select_]').val(this.value);
        }
});
jQuery“[id^=select_]”-这允许您选择下拉列表,下拉列表的id从select开始_

希望以上帮助

干杯
这在chrome和firefox上都可以使用

在下拉框中设置值

var given = $("#anotherbox").val();
$("#HowYouKnow").text(given).attr('value', given);
试试这个

$(element).find("option:contains(" + theText+ ")").attr('selected', 'selected');

如何获取文本的索引?请参阅我的答案…已测试并正在运行。问题是通过文本而不是索引设置的下拉值。这并不能回答问题。OP希望根据文本而不是索引设置选择。$document.readyfunction{$HowYouKnow.valGOOGLE;};也设置值。。。不知道我为什么会被否决!可能是因为只有当您的选项值与文本相同时,这才有效。因此,在OP的示例中,GOOGLE文本选项的值为2,因此不起作用。这将仅基于值框设置,而不是基于下拉文本。请认为这仅适用于索引而不是文本。如果选择列表包含具有类似文本值的选项,则不起作用,ie GOOGLEGOOGLE PLUS-关于如何处理此问题的想法?要处理类似的值prolem,您可以获得索引[0]的第一个匹配项,默认值将返回最后一个索引,如下所示:$HowYouKnow选项:contains+theText+.attr'selected','selected'[0];上述方法在版本1.9.1及更新版本的jquery中被破坏。将.attr改为.prop->此处测试:您的小提琴适合我。attr还没有被弃用。如果它不是多个select,请使用匿名函数的return false中断每个循环。不要这样认为$你怎么知道的。文本。。。。。将删除本例中的所有选项。attr确实更改了dom中的选定选项,但显示的文本没有更改。另一方面,.prop将同时执行这两项操作。
jQuery('[id^=select_] > option').each(function(){
        if (this.text.toLowerCase()=='text'){
            jQuery('[id^=select_]').val(this.value);
        }
});
var given = $("#anotherbox").val();
$("#HowYouKnow").text(given).attr('value', given);
$(element).find("option:contains(" + theText+ ")").attr('selected', 'selected');