jQuery возвращает первое совпадение в списке выбора - PullRequest
1 голос
/ 12 января 2010

Я хочу выбрать первую опцию в списке выбора, которая соответствует определенному значению, в настоящее время выбрано последнее совпадение, например:

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") добивается цели, если бы был один единственный список, как это работает, когда существует несколько форм со всеми их уникальными идентификаторами edit-form- #?

ответ от ryanulit:

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

Ответы [ 2 ]

3 голосов
/ 12 января 2010

Я хочу выбрать первый вариант в выберите список, который соответствует определенному значение ...

Любой из них должен сделать это для вас. Конечно, вы можете заменить «мистер х» любым значением, которое хотите найти.

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

или

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

EDIT

Это возможно. Просто обратитесь к конкретному элементу выбора. Также я бы изменил имя вашего выбора на item_responsible, как рекомендовал кто-то другой, а также дал бы тот же текст для его идентификатора. Тогда вы можете просто сделать это:

$("#item_responsible option[value='mister x']:first") вместо $("option[value='mister x']:first")

... где #item_responsible - ваш выбор:

<select id="item_responsible" name="item_responsible">
     <!-- options here -->
</select>
0 голосов
/ 12 января 2010

В поле выбора checked="checked" является распространенной ошибкой, оно должно быть selected="selected" в части HTML.

Синан.

...