2010-08-22 4 views
1

Je développe une page web en utilisant django et je veux ajouter du javascript à un formulaire en utilisant jQuery. Fondamentalement, je veux sélectionner une option dans un formulaire en fonction d'une autre sélection. Je dois utiliser le texte de l'option et non les valeurs de l'option car les valeurs de l'option sont générées dynamiquement par django.Sélection d'une option par son texte

Un extrait de mon code:

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()); 
      } 
     } 
    ); 

éléments de formulaire 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> 

J'utilise jQuery 1.4, ce comportement a apparemment changé de 1.3 à 1,4 où vous pouvez utiliser directement

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

Notez que django remplace {{usuario.username}} avec le nom d'utilisateur actuel. Mon code ne fonctionne pas car jQuery ne sélectionne pas l'élément option en utilisant le sélecteur text = 'value'. Comment puis-je résoudre ce problème?

Merci à l'avance

ps: il est ma première fois en utilisant jQuery

Répondre

1

Vous pouvez vérifier comme celui-ci pour obtenir le texte du sélectionné <option> (pour votre premier bloc de code):

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

Et ceci pour définir la valeur <option> sélectionnée par le texte:

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

lente bas, je vois beaucoup trop de fautes de frappe de vous aujourd'hui ;-) –

+1

@Andy - Distrait par ceci: http://stackoverflow.com/questions/3541541/how-to-know-which-jquery-button-was- click-in-list-context jQuery UI efface la valeur qu'il semble, pas sûr de savoir qui a pris cette sage décision, me rejeter: '( –

+0

cela fonctionne et m'aide à comprendre la philosophie de jQuery. Merci! – eliocs

1

Je viens de trouver quelque chose qui fonctionne, en utilisant contient au lieu du texte = sélecteur 'valeurs

ne fonctionne pas pour moi

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

travail

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