按文本选择选项

时间:2010-08-22 13:02:34

标签: javascript jquery html dom

我正在使用django开发一个网页,我想使用jQuery向表单添加一些javascript。基本上我想根据另一个选择选择表单中的选项。 我需要使用选项的文本而不是选项的值,因为选项的值是由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没有使用text ='value'选择器选择选项元素。 我怎样才能克服这个问题?

提前致谢

p.s:这是我第一次使用jQuery

2 个答案:

答案 0 :(得分:2)

找到了有用的东西,使用包含而不是text ='values'选择器

不适合我

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

工作

$("#id_adeudado option:contains('{{ usuario.username }}')")

答案 1 :(得分:1)

您可以像这样检查以获取所选<option>的文本(对于您的第一个代码块):

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

这是通过文本设置选定的<option>值:

$("#id_adeudado option").filter(function() {
  return this.value == '{{ usuario.username }}';
}).attr('selected', true);