2010-08-22 78 views
1

我正在用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

回答

1

您可以檢查這樣獲取所選<option>的文本(您的第一個代碼塊):

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

這由文本設置選中<option>值:

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

慢下來,我看到太多的錯別字從你今天;-) – 2010-08-22 13:07:42

+1

@Andy - 分心此:http://stackoverflow.com/questions/3541541/how-to-know-which-jquery-button-was-點擊列表上下文jQuery UI抹去了它的價值,不知道誰做出了這個明智的決定,把我拋棄:'( – 2010-08-22 13:11:56

+0

這有效,並幫助我理解jQuery的理念。謝謝! – eliocs 2010-08-23 08:29:14

1

只是發現一些作品我第一次使用包含而不是文本=「值」選擇

不是爲我工作

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

工作

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