Est-ce que quelqu'un sait s'il est possible de transmettre un paramètre de demande masqué avec un
5 Réponses :
Il y a l'entrée de formulaire type = 'caché' code> que vous pouvez mettre à jour à l'aide de l'événement code> tinchange code> de la liste déroulante SELECT. Il serait affiché avec le formulaire. Je soupçonne que vous voudriez créer un tableau des valeurs possibles pour l'entrée cachée dans le même ordre que leurs équivalents dans la liste déroulante Sélectionner, puis accédez à la valeur de la matrice par index à l'aide de la propriété
sélectionnée code> de l'élément SELECT. P>
Merci Dave, j'ai considéré JavaScript mais j'ai décidé contre elle à la fin. Je veux utiliser une solution purement html.
Une liste de sélection a à la fois une valeur affichée à l'utilisateur et une valeur qui est transmise au serveur dans le formulaire post. Afin que vous puissiez utiliser une sorte de délimiteur dans la valeur affichée pour obtenir les deux valeurs renvoyées, puis les analyser à ce point: mais il serait encore de transmettre une valeur d'identification que vous pourrait alors utiliser pour savoir quel élément a été sélectionné dans une base de données et l'utilisera également pour rechercher le deuxième élément associé: p> Votre base de données peut ressembler à ceci: p>
Merci pour ça. J'utilise réellement la méthode d'analyse en ce moment, mais je me demandais s'il y avait une manière légèrement plus agréable en publiant deux valeurs avec la sélection. Je ne peux pas utiliser la solution de valeur d'identification car la deuxième valeur n'est pas enregistrée dans la base de données. Au fait, mon code HTML que j'ai inclus dans ma question n'a pas été affiché, probablement parce que je ne l'ai pas formé correctement, c'est pourquoi cela se lit mal, désolé!
essayez de stocker les autresData à l'ID d'option
Lorsque vous générez votre page, vous savez que FOO devrait vous renvoyer FOO et BAR. Qu'est-ce qui vous empêche de faire la même chose au traitement à la place? Plutôt que "lors de la sortie, j'écris Foo and Bar", juste faire "si foo puis aussi barre" au traitement ou ai-je manqué quelque chose?
Voici une solution alternative supposant que JQuery est disponible. Si vous utilisez une bibliothèque d'utilitaires JS autre que JQuery, ou aucune bibliothèque, cela reste possible. Son juste liant une fonction à l'événement ONCHANGE SELECHANGE et à l'analyse du JSON à partir d'un attribut de données personnalisé.
//bind onchange once document is loaded and ready $.ready(function(){ $('#TheSelector').on('change',UpdateHidden); }); function UpdateHidden(event) { //Create a base name for grouping dynamic values; ex: Support_AnySelect Name='Support_'+SelectField.attr('name'); //Check if container was made for us already Contain=$(this.parent).find('#'+Name+'-container'); if(Container.length===0) //make the container if missing { $(this).after('<span id="'+Name+'-container" style="visibility: none;"></span>'); Contain=$(this.parent).children('#'+Name+'-container'); } //get our special multi-values, jQuery will auto decode the JSON SupportValues = this.data('support'); Contain.empty(); //get rid of last select options $.each(SupportValues,function(i,val) { Contain.append('<input type="hidden" name="'+Name+'['+i+'] value="'+val+'"/>'); }); }
Je pense que votre solution est beaucoup plus puissante et plus légère que la création d'une nouvelle table dans la base de données pour stocker les valeurs. Cependant, vous utilisez beaucoup de raccourcis dans votre code (comme '# theselector' code>) qui ne sont pas évidents à comprendre pour les débutants. Et comme ça ne marche pas, je ne pouvais même pas l'essayer dans un violon de comprendre les choses de moi-même. Quoi qu'il en soit, ce sont des choses mineures et j'ai toujours eu mon code de travail grâce à vos indications qui m'ont pointé dans la bonne direction. UPvote!
Si vous devez utiliser un champ masqué pour chaque option de la liste déroulante Sélectionner, vous pouvez définir cette valeur dans votre propre attribut dans la balise, au lieu de la définir dans le champ caché.
p>
<option value="foo" fooData="foo|bar">foo</option> <option value="foo2" fooData="foo2|bar2">foo2</option>
J'aimerais simplement ajouter, que si vous êtes prêt à utiliser des boutons radio au lieu d'une sélection déroulante, les suivants ont fonctionné pour moi:
email = request.POST.get("emaildata","")
Clarifier. Donnez un exemple de ce que vous voulez.
J'ai clarifié ma question. Désolé, les éléments de code HTML incorrectement formaté n'étaient pas affichés avant. Merci