2009-12-18 7 views
0

J'utilise le plugin thickbox de jquery (ver.3) et à l'intérieur je veux placer un formulaire qui sera soumis en utilisant $ .post. Mais les éléments de formulaire ne se comportent pas comme ils le devraient. Pour exemple, il y a une boîte de sélectionéléments de forme se comportant de manière inhabituelle dans une jquery thickbox

<select name="priority" id="priority"> 
    <?php for($i = 5; $i > 0; $i--){ ?>           
      <!-- <input type="radio" class="star" name="priority" value="<?php echo $i ?>"> --> 
      <option value="<?php echo $i; ?>"><?php echo $i; if($i == 5) echo ' (lowest)'; if($i == 1)echo ' (highest)'; ?></option>    
    <?php } ?> 
    </select> 

quand je clique sur le bouton qui appelle la fonction de soumission,

function add(){ 
    var pr = document.getElementById("priority").value; 
    console.log(pr); 

} 

il alerte que la première valeur-à-dire. 5 peu importe l'option sélectionnée.

Aidez-nous s'il vous plaît. Est-ce un problème communément rencontré?

Répondre

1

Comme vous utilisez jQuery, vous devez utiliser

var pr = $("#priority option:selected").val(); 

ou

var pr = $("#priority").val(); 

au lieu de

var pr = document.getElementById("priority").value; 

cela devrait résoudre

voir http://docs.jquery.com/Attributes/val pour plus je nfo

+0

En fait, c'est ce que j'avais écrit initialement, mais quand il a échoué, j'ai essayé le js de base. Selon mes connaissances, document.getElementById devrait fonctionner avec jquery. Veuillez corriger – naiquevin

1

Avec jQuery:

var pr = $("#priority option:selected").val(); 

Si vous voulez utiliser javascript pur, vous devriez être en mesure de le faire:

var i = document.getElementById("priority").selectedIndex; 
var options = document.getElementById("priority").options; 

var value = options[i].value; 
+0

+1 doh! C'est là que je me suis trompé avec ma réponse, besoin de rafraîchir sur mon jQuery! – Rowan

+0

Ce qui est intéressant, c'est que j'ai juste essayé $ ('# priority'). Val() et que ça fonctionne correctement. –

+0

oui, je viens de vérifier à nouveau aussi et j'avais raison à l'origine. L'une ou l'autre méthode est valide. – Rowan

1

Je ne sais pas thickbox spécifiquement, mais les problèmes avec les formes sont communes à de nombreux outils similaires à Lightbox. La raison en est que l'outil 1. prend les éléments de forme hors du contexte de formulaire et 2. habituellement les copie dans la Thickbox/Lightbox/quoi que ce soit au niveau DOM. Lorsque la boîte se ferme, l'élément est détruit ou réinitialisé au lieu d'être déplacé dans le formulaire avec les paramètres modifiés qui ont survécu.

Il est généralement possible de modifier ce comportement, mais uniquement en changeant le script * box lui-même afin qu'il transfère les éléments DOM en toute sécurité.