2012-03-05 55 views
0

我很难通过选项value =“X”选择另一个下拉选项..我该怎么做?用jquery选择另一个下拉选项

<select id="type"> 
    <option value="all">All Types</option> 
    <option value="1">Comments</option> 
    <option value="2">Meanings</option> 
    <option value="3">Thoughts</option> 
</select> 

它的工作原理,如果我做下面的代码,而是因为我通常把类型总量(这样评论13,含义6等),因此数字总是从一种形式转换到另一种。

$("#type").val('Comments'); 

但是我怎么选择它基于价值=“X”或价值=“所有”

+0

我不知道,如果我得到这个权利,但你可以得到,例如,“备注”此选择选项:'$(“#类型选项[值= 1]“)' – scumah 2012-03-05 19:06:51

回答

1

你混淆选项的文本与价值

$("#type").val(1);// will select option with text="Comments" 

如果你想要得到的文本并转换为所选

$('#type option').filter(function(){ 
    return $(this).text()=="Comments"; 

}).prop('selected',true) 
+0

好吧,我看到发生了什么。当我执行$(“#type”).val('all')时,选项(我猜是在幕后?)确实发生了变化,因为当我检查POST时,它说全部选中了。然而,选项文本(注释,含义等)不会改变,所以用户仍然认为他们是在他们最初选择的任何东西上。 – Mike 2012-03-05 19:47:36

+0

但你正在做的是强制一个值,如果该值不存在于任何选项中,那么没有人被选中以显示用户 – charlietfl 2012-03-05 19:57:47

+0

那么我将如何强制它显示“所有类型”?我的下拉菜单总是不同的,所以有时它的所有类型500,所有类型343,所有类型0等。 – Mike 2012-03-05 20:03:41

0

你接近 - 只要拨打val()值的选项

var value="2"; 
$("#type").val(value) 

fiddle here

0

http://api.jquery.com/val/始终以/给出值属性的数据。

尝试http://jsfiddle.net/rKMmg/

+0

如何在飞行中更改它?因此可以说用户将其更改为2(含义)。然后他们点击一个提交按钮。发生这种情况时,我希望下拉菜单显示所有内容。 val('all')这样做(因为我可以验证POST),但下拉列表中的文本实际上并未更改为所有类型 – Mike 2012-03-05 19:57:01

0

如果你想获得基于超出文本的价值,你可以使用:contains

$('#type option:contains(Comments)').val(); 

否则,如果您想设置您可以使用相同的选择的价值和设置所选择的属性:

$('#type option:contains(Comments)').prop('selected', true); 
+0

包含的内容非常危险。如果其他选项具有相似的文本,该怎么办? – charlietfl 2012-03-05 19:18:39

+0

如果这是一个问题,那么是的,你的解决方案会更具决定性。 – scurker 2012-03-05 19:33:49

1
jQuery('#type option:contains("Comments")').prop('selected', true); 

编辑:看完这个之后,如果你使用下面的话,你可以根据价值或选择文本来选择:以下都将选择你列表中的第二个项目:选项值为1,注释文本 - 任何suffex /其他文本诸如“评论33”等意见仍被支持。

var checkMe = '1'; 
$('#typePick option:contains("'+checkMe+'"), #typePick option:[value="'+checkMe+'"]').prop('selected',true); 

通过文字:

var checkMe = 'Comments'; 
$('#typePick option:contains("'+checkMe+'"), #typePick option:[value="'+checkMe+'"]').prop('selected',true); 

而不同之一:<option value="1">Comments 33</option>

var checkMe = 'Comments 33'; 
$('#typePick option:contains("'+checkMe+'"), #typePick option:[value="'+checkMe+'"]').prop('selected',true); 

注:在过去的三个例子,唯一的区别是分配给checkMe值。

看到这里的工作示例:http://jsfiddle.net/a7SQT/1/

+0

嗯很好的选择,谢谢。我很难让它选择'全部'选项。 – Mike 2012-03-05 20:12:25

+0

@Mike请参阅我发布的示例,其中有一个选择“全部”选项。 (“Click for All”按钮设置它) – 2012-03-05 20:31:54

相关问题