jQuery返回选择列表中的第一个匹配项

时间:2010-01-12 13:04:22

标签: jquery list select option

我想在选择列表中选择与某个值匹配的第一个选项,当前选择的是最后一个匹配,如下所示:

jQuery('.edit-item').click(function(){
   var id = jQuery(this).attr('id');
   var assignee = jQuery('#assignee-'+id).text();
   jQuery('#edit-form-'+id+' select[name=item[responsible]]').val(assignee); 
   return false;
});

<select name="item[responsible]">
  <option value="*">Anyone</option>
  <option value="'+$user+'">Me ('+$user+')</option>')
   -- here a loop with groups --
    <option value="">----------</option>
    <option value="'+$group+'">'+$group+'</option>')
    -- here a loop with all usernames within $group
    <option value="'+$username+'">'+$username+'</option>')
    -- end loop --
   -- end loop --
 </select>')

现在,如果最终用户是在他所在的组中选择用户的受让人,而不是第二个值“我(用户)”,那么有没有办法做到这一点,还是需要一些解决方法?

在用例中,受让人是后端用户,只是

<select name="item[responsible]">
 <option value="*">Anyone</option>
  <option value="mister x" selected=selected>Me (mister x)</option> // this one needs to be selected
  <option value="1">1</option>
  <option value="a">a</option>
  <option value="b">b</option>
  <option value="2">2</option>
  <option value="c">c</option>
  <option value="d">d</option>
  <option value="mister x">mister x</option> // this is the one that is selected
</select>

好的,所以选择=选中而不是选中=已选中,无论jQuery使用哪一种,都不会手动完成。

所以$("option[value='mister x']:first").attr("selected", "selected")可以解决问题,如果有一个单一列表,当有多个表单及其所有唯一ID时,这是如何工作的?#?

ryanulit回答:

jQuery('#edit-form-'+id+' option[value='+assignee+']:first').attr("selected", "selected");

2 个答案:

答案 0 :(得分:3)

  

我想选择a中的第一个选项   选择与某个匹配的列表   值...

其中任何一个都应该为你做到这一点。当然,您可以将'mister x'替换为您要搜索的任何值。

$("option[value='mister x']:first").attr("selected", true);

$("option[value='mister x']:first").attr("selected", "selected");

修改

这是可能的。只需参考特定的select元素即可。此外,我会像其他人推荐的那样将您的选择名称更改为item_responsible,并为其ID提供相同的文本。然后你可以这样做:

$("#item_responsible option[value='mister x']:first")代替$("option[value='mister x']:first")

... #item_responsible是您的选择:

<select id="item_responsible" name="item_responsible">
     <!-- options here -->
</select>

答案 1 :(得分:0)

在选择框中checked="checked"是一个常见的错误,它应该是html部分的selected="selected"

思南。