2013-04-05 3 views
0

Je sais que cela a déjà été demandé, mais je ne trouve pas de solution à mon problème.Insérer un texte de sélection dans la base de données

J'ai une boîte de sélection avec trois options et trois valeurs, ces valeurs sont utilisées pour effectuer certains calculs en utilisant JS, donc je ne peux pas les modifier pour correspondre au texte d'option. Ceci pour calculer la quantité de V.A.T.

Mes sélectionner ressemble à ceci:

<select name="tax" id="tax" class="select"> 
<option value="20">Standard 20%</option> 
<option value="0">Zero 0%</option> 
<option value="0">Exempt 0%</option> 
</select> 

Ce qui est bien, mais je dois insérer le texte dans la base de données et non les valeurs, car il doit être vu dans le back-end. J'ai essayé une fonction javascript pour ajouter une entrée cachée à la boîte de sélection ciblant l'option qui est sélectionnée mais c'était un peu bogué, et n'a pas semblé juste. Je pensais à afficher le texte à côté de la valeur quand il est extrait de la base de données, mais je ne serais pas capable de distinguer des deux montants 0.

Quelqu'un peut-il s'il vous plaît offrir d'autres solutions, les meilleures approches à ce sujet.

Merci beaucoup

+0

Vous écrivez ceci à la base de données en utilisant AJAX? – BenM

+0

Dupliqué: http://stackoverflow.com/questions/610336/javascript-retrieving-the-text-of-the-selected-option-in-select-element – melancia

+0

vous pouvez utiliser l'attribut 'data' pour contenir vos valeurs de calcul et utilisez l'attribut 'value' pour contenir les valeurs que vous voulez stocker. – dnagirl

Répondre

2

Vous pouvez obtenir le texte de l'option sélectionnée avec jQuery comme suit:

$("#tax option:selected").text(); 

Vous pouvez facilement utiliser cela dans votre requête AJAX pour envoyer la valeur correcte à la base de données, juste assigner à une variable:

var the_text = $("#tax option:selected").text(); 

A défaut, pourquoi ne pas le faire de la recherche dans les calculs JS - ce serait rendre votre vie beaucoup plus facile:

<select name="tax" id="tax" class="select"> 
    <option value="standard">Standard 20%</option> 
    <option value="zero">Zero 0%</option> 
    <option value="exempt">Exempt 0%</option> 
</select> 

Et votre JS pourrait ressembler à ceci:

var vat_amount = ($('#tax').val() == 'standard') ? 20 : 0; 
+0

ça doit être ça –

+0

Merci beaucoup BenM. J'ai implémenté la recherche dans le calcul JS, et il passe maintenant correctement la valeur quand l'élément déroulant est sélectionné, (et calcule correctement) comme: run: function() { \t \t var amount = $ ('# net-price -1 '). Val(); \t \t var tax = ($ ('# tax1'). Val() == 'standard')? 20: 0; \t \t var tax = ($ ('# tax1'). Val() == 'zéro')? 0: 0; \t \t var tax = ($ ('# tax1'). Val() == 'exempté')? 0: 0; – m1243

+0

J'ai oublié de mentionner le changement des noms des variables pour chaque montant de taxe, var tax, var tax1 etc. – m1243

0

Vous pouvez récupérer le texte de JS en utilisant la fonction html(). Ou, si vous utilisez simplement un POST pour envoyer les données au serveur, essayez d'ajouter les deux valeurs à l'attribut value de l'option et divisez-le côté serveur pour obtenir les bonnes données.

Questions connexes