2010-07-10 8 views
0

Je travaille sur le localisateur de magasin de sortes. Il est intégré dans une page de commande. Le client saisit son zip et les magasins qui l'entourent sont affichés dans une table avec dix lignes. J'ai déjà mis en place des boutons radio à la fin de chaque ligne afin que l'utilisateur puisse sélectionner l'endroit où il souhaite que son produit soit expédié. Chaque ligne contient le nom du magasin, l'adresse et le numéro de téléphone, chaque segment de données étant divisé par sa classe, c'est-à-dire ".street-address, .city, .state". le problème est qu'il existe ces ensembles de classes pour chaque ligne de la table. J'ai lutté avec le code jquery pour essayer de trouver un moyen de spécifier que quand une radio sur la ligne de la table est cochée, je veux que le texte de l'adresse .street de cette ligne soit mis comme la valeur du champ de saisie " adresse "dans le bon de commande. Toute aide serait appréciée. J'ai essayé somethigng le long des lignes de:Jquery copie le texte des classes dans la rangée de la table avec la radio vérifié pour entrer des champs

$('.fflradio').click (function() {$(this).parents('tr').get(".views-field-title").text($("company-name:input").val());}); 

Je sais que ce n'est pas juste comme il est de toute évidence ne fonctionne pas, mais toute entrée serait appréciée! Merci!

Répondre

1

Eh bien ne pas voir votre HTML, je ne peux pas dire exactement ce que les sélecteurs ressemblerait, mais cela pourrait être proche (et ce n'est pas loin de ce que vous avez):

$('.fflradio').click(function() { 
    $('#id-of-the-address-field').val(
    $(this) 
     .closest('tr') 
     .find('.street-address') 
     .text() 
); 
}); 

maintenant Notez que vous pouvez rencontrer des problèmes s'il existe du code HTML dans le champ d'adresse de l'entreprise. Bien sûr, vous feriez un appel similaire si vous deviez remplir le nom de l'entreprise, le numéro de téléphone, etc.

+0

Merci! Cela a résolu pour moi! Je me sens un peu bête, ça me semblait bizarre de mettre tout ça dans les parenthèses .val. De toute façon, j'ai dû changer .closest à .parents pour le faire fonctionner. Merci encore! – abemonkey

1

Vous pourriez vouloir repenser votre approche. Vous êtes en fait en train d'enregistrer votre propre page Web pour obtenir des informations que vous avez déjà. Je recommande de stocker les données d'adresse de magasin dans un type d'objet accessible à partir de votre gestionnaire de clic de bouton radio. Ainsi, votre implémentation ne dépend pas d'une disposition d'interface utilisateur spécifique.

Cet exemple rapide et sale devrait faire passer l'idée, mais il y a probablement de meilleures façons de le faire et je n'utiliser cette approche dans la production:

// In the code that builds a row in the table, store the address data in an object in the radio button's data dictionary (variables should be self-explanatory): 
theRadioButton.data('storeAddress', 
    { 
    'street': theStreet, 
    'city': theCity, 
    'state': theState, 
    'postalCode': thePostalCode 
    }); 

// In your event handler, refer to the address object: 
$('.fflradio').click(function() { 
    var address = $(this).data('storeAddress'); 
    $('#streetAddressFieldID').val(address.street); 
    $('#citysFieldID').val(address.city); 
    $('#stateFieldID').val(address.state); 
    $('#postalCodeFieldID').val(address.postalCode); 
}); 
+0

Je suis tout à fait d'accord pour dire que la façon dont j'y vais n'est pas tout à fait idéale, mais je travaille sur quelques bogues uniques que certains modules ont dans le CMS Drupal. Parfois, tu dois juste faire ce qui va marcher. Surtout à mon niveau de compétence actuel. Merci pour la réponse si! J'ai certainement appris de cela! – abemonkey