【发布时间】:2011-01-04 04:17:45
【问题描述】:
我想在选择列表中选择与某个值匹配的第一个选项,当前选择了最后一个匹配项,如下所示:
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>
好的,所以selected=selected而不是checked=checked,无论使用哪个jQuery,都不是手动完成的。
所以$("option[value='mister x']:first").attr("selected", "selected") 可以解决问题,如果只有一个列表,那么当存在多个具有唯一 ID 的表单时,这将如何工作 edit-form-# ?
ryanulit 的回答:
jQuery('#edit-form-'+id+' option[value='+assignee+']:first').attr("selected", "selected");
【问题讨论】:
-
您能用 HTML 向我们展示您希望最终结果的样子吗?
-
是什么导致 x 先生有两个选项?为什么一个大写而另一个不大写?
-
您可以忽略大写字母,有两个选项可用,因此在长列表中,用户几乎可以立即选择他/她自己,而不必滚动列表并查找他/她自己的名字
-
如果你只是先显示他们的名字然后列出其余不等于用户名的名字怎么办?这样您就不必担心区分这两个选项了。
-
肯定会解决问题,但不能解决问题,我只想在绝对没有办法解决这个问题的情况下这样做。