Выбор варианта по его тексту - PullRequest
1 голос
/ 22 августа 2010

Я разрабатываю веб-страницу, используя django, и я хочу добавить javascript в форму, используя jQuery. В основном я хочу выбрать вариант в форме в зависимости от другого выбора. Мне нужно использовать текст опции, а не значения опции, потому что значения опции генерируются динамически django.

Выписка из моего кода:

Javascript

     $("#id_propietario").change(
        function() {
            if ($("#id_propietario :selected").text() == '{{ usuario.username }}') {
                alert('test');
            } else {
                $("#id_adeudado").val($("#id_adeudado option[text='{{ usuario.username }}']").val());
            }
        }
      );

HTML-элементы формы

 <p><label for="id_propietario">Propietario:</label> <select name="propietario" id="id_propietario">
 <option value="" selected="selected">---------</option>
 <option value="1">elio</option>
 <option value="2">up1</option>
 <option value="3">up2</option>
 </select></p>
 <p><label for="id_adeudado">Adeudado:</label> <select name="adeudado" id="id_adeudado">
 <option value="" selected="selected">---------</option>
 <option value="1">elio</option>
 <option value="2">up1</option>
 <option value="3">up2</option>
 </select></p> 

Я использую jQuery 1.4, это поведение, по-видимому, изменилось с 1.3 на 1.4, где вы можете напрямую использовать

$("#id_adeudado").val('{{ usuario.username }}');

Обратите внимание, что django заменяет {{usuario.username}} на текущее имя пользователя. Мой код не работает, потому что jQuery не выбирает элемент option с помощью селектора text = 'value'. Как я могу преодолеть эту проблему?

Заранее спасибо

p.s: я впервые использую jQuery

Ответы [ 2 ]

2 голосов
/ 22 августа 2010

Только что нашел что-то работающее, используя вместо селектора text = 'values'

не работает для меня

$("#id_adeudado option[text='{{ usuario.username }}']")

работает

$("#id_adeudado option:contains('{{ usuario.username }}')")
1 голос
/ 22 августа 2010

Вы можете проверить таким образом, чтобы получить текст выбранного <option> (для вашего первого блока кода):

$("#id_adeudado :selected").text();

И это для установки выбранного значения <option> по тексту:

$("#id_adeudado option").filter(function() {
  return this.value == '{{ usuario.username }}';
}).attr('selected', true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...