【问题标题】:Selecting an option by its text通过文本选择选项
【发布时间】:2010-08-22 13:02:34
【问题描述】:

我正在使用 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' 选择器选择选项元素。 我该如何克服这个问题?

提前致谢

ps:这是我第一次使用 jQuery

【问题讨论】:

    标签: javascript jquery html dom


    【解决方案1】:

    刚刚找到了一些有用的东西,使用 contains 而不是 text='values' 选择器

    不适合我

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

    工作

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

    【讨论】:

      【解决方案2】:

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

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

      这将通过文本设置选定的&lt;option&gt; 值:

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

      【讨论】:

      • @Andy - 被这个分散了注意力:stackoverflow.com/questions/3541541/… jQuery UI 似乎抹去了价值,不确定是谁做出了这个明智的决定,让我失望:'(
      • 这可以帮助我理解 jQuery 的哲学。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      相关资源
      最近更新 更多