2010-05-06 6 views
1

J'essaie de trouver la meilleure façon de gérer une liste déroulante où l'une des options « autre » montre un champ de texte caché (via jQuery), où l'utilisateur peut alors entrer du texte. Si les deux le menu déroulant et le champ d'entrée donner le même attribut « name », puis le code côté serveur exécute un contrôle sur les valeurs de chaque afin de savoir ce que l'on est la valeur active - par exemple si la valeur de la boîte de sélection est " autre », puis vérifiez la valeur du champ de saisie de texte - si ce n'est pas la valeur par défaut (" entrer le texte "), alors vous pouvez utiliser cette valeur et l'enregistrer dans la base de données. Est-ce une approche désordonnée à ce problème?Handling « autre » option dans la liste déroulante sélectionnez avec le champ de saisie de texte libre

EDIT: ceci est mon code côté client pour afficher/cacher le champ « autre ».

$('.select_change').live("click change", function(){ 
      //check if value is other 
      $(this).parent().find(".hidden").toggle($(this).val() == 'other'); 
     }); 

Répondre

2

Je pense que le chemin à parcourir est de vérifier si la valeur sélectionnée est égale à « Autre » et puis afficher/masquer l'entrée en fonction de la valeur.

Du côté du serveur, il effectuer une vérification similaire, et stocker la valeur de la zone de texte si la valeur de la liste déroulante est égale à « Autre ».

Je ne l'ai pas testé ce code, mais je pense que cela est l'idée générale:

$('#myDrpdown').change(function() { 
    if($(this).val() === "other"){ 
     $("#hiddenInput").show(); 
    } else { 
     $("#hiddenInput").hide(); 
    } 
}); 
+1

+1 C'est l'approche que je tendance à aller. Je dirai cependant que, pour un site bilingue, j'ai trouvé le meilleur moyen de tester l'élément * last * (en supposant que l'implémentation du champ 'Other' soit toujours en dernier dans les sélections générées). – karim79

+0

Salut Danny, c'est plus ou moins ce que j'ai en ce moment (ajouté mon code à mon post ci-dessus). Il est plus une question de la meilleure façon de traiter les données présentées lorsque vous avez deux entrées possibles pour une valeur dans la base de données – ted776

+0

@ted Je suppose que cela dépend de la façon dont vous obtenez les données sur le serveur, si vous faisiez quelque chose comme envoyer des données en format json, vous pouvez évaluer lequel utiliser du côté client, de sorte que lorsque la valeur est correcte, la seule autre option que je peux voir est de vérifier la valeur de la liste déroulante côté serveur , voir si elle est définie sur autre, si elle est alors utiliser la valeur de la zone de texte. Vous semblez réticent à adopter cette approche, y a-t-il une raison? – DannyLane

Questions connexes