使用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');