Проблемы с выбором элемента в окне SELECT с помощью jQuery с цитатой - PullRequest
1 голос
/ 03 февраля 2010

У меня есть скрытая форма со списком, из которой мне нужно выбрать опцию, когда пользователь хочет просмотреть эту форму.Я использовал var assignee = 'имена людей';

jQuery (опция # edit-form [value = '+ option +']: first '). Attr ("selected", "selected");

Я пытался сделать это, но это не работает, так как значение в теге опции не указывается также с \, поэтому он не найдет совпадение

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

Такделает это следующим образом, мой единственный вариант?

jQuery('#edit-form option').each(function(){
  if(jQuery(this).val() == option) {        
   jQuery(this).attr("selected", "selected");
   return false;
     }
});

a Тестовая страница

<html>
<head>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>

  <script>
  //test vars
  var option1 = "option two";
  var option2 = "option '";
  var option = option2;

  $(document).ready(function(){
    $('#edit-form [name=select1] option').each(function(){
      if($(this).val() == option) {        
    $(this).attr("selected", "selected");
    return false;
       }
    });

    $('#edit-form [name=select2] option[value='+option+']:first').attr("selected", "selected");
    option = option.replace(/\'/,'\\\'');
    $('#edit-form [name=select3] option[value='+option+']:first').attr("selected", "selected");
  });
  </script>
</head>
<body>
  <form id="edit-form">
  <select name=select1>
  <option value="option one">option one</option>
  <option value="option two">option two</option>
  <option value="option two">option two</option>
  <option value="option \'">option \'</option>
  <option value="option '">option '</option>
  </select>
  <select name=select2>
  <option value="option one">option one</option>
  <option value="option two">option two</option>
  <option value="option two">option two</option>
  <option value="option \'">option \'</option>
  <option value="option '">option '</option>
  </select>  
  <select name=select3>
  <option value="option one">option one</option>
  <option value="option two">option two</option>
  <option value="option two">option two</option>
  <option value="option \'">option \'</option>
  <option value="option '">option '</option>
  </select>
</body>
</html>

1 Ответ

2 голосов
/ 03 февраля 2010

А как же:

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

Обратите внимание на использование символов " и '.

например. Это все допустимые строки:

"Valid 'string'"
'valid "string"'
// also valid with escape chars
"valid \"string"
'valid \'string'

но не эти

"not valid "string""
'not valid 'string''

Вы также можете увидеть это с помощью подсветки синтаксиса.

Edit:

У меня работает, если я использую это:

$('#edit-form select[name="select3"] option[value="'+option+'"]').first().attr("selected", "selected");

Примечание: я использую .first() вместо :first и правильный select[name="select3"]. Убедитесь, что вы используете правильные селекторы jQuery.

...