我正在使用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
答案 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);