2009-07-28 6 views
2

J'ai un problème avec ce code jquery ci-dessous. S'il vous plaît donnez-moi des conseils ou du code si vous pouvez aiderjquery pays sélectionner quand le pays est déjà enregistré?

J'ai donc une liste déroulante de pays, une liste déroulante d'état pour les Etats-Unis, et un champ de saisie d'état pour les utilisateurs non-USA.

Lorsque vous sélectionnez USA dans la liste des pays, il cache le champ othstate, lorsque vous sélectionnez un pays autre que les États-Unis, il cache la statelist Etats-Unis et montre le champ de saisie

Jusqu'à présent, si bien, est maintenant ici où le problème vient, ce code fonctionne très bien pour un formulaire d'inscription, mais pas pour l'édition d'un emplacement des utilisateurs.

Lorsqu'un utilisateur a déjà sauvegardé ces données dans mysql/php lorsqu'il visite la page d'édition, cela ne fonctionnera pas très bien. Une solution que je pensais est d'avoir 2 fonctions javascript et utiliser PHP pour analyser la bonne en fonction de leur pays, qui traite de la question s'ils ont d'autres pays puis les Etats-Unis sauvés, il chargerait avec l'Angleterre sélectionnée mais montrerait USA états à la place du champ d'entrée d'état et vice.

Il y a encore 1 problème majeur cependant. Si vous sélectionnez un pays non-USA, vous obtenez alors la boîte de saisie othstate, vous pouvez alors taper data, maintenant disons que je l'ai fait et tapé certaines données puis sélectionné USA from country list, il cacherait les données que j'ai tapées et laissez-moi choisir un état. Le problème avec ceci est dans le backend avec PHP je vérifie pour voir si l'entrée de texte est vide ou l'état est vide, cette faille permettrait aux deux de contenir des données.

J'espère que cela avait un sens et j'aimerais vos opinions et aider à satisfaire

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    locationlist(); 
}); 

function locationlist() { 
    $('#othstate').hide(); 
    $('#country').change(function() {   
     var val = $(this).val(); 
    if (val == 223) { 
     $('#state').val('').show(); 
     $('#othstate').hide(); 
    }else { 
     $('#state').val('').hide(); 
     $('#othstate').show(); 
    } 
    }); 
} 
</script> 

<form method="post" name="form1"> 
    <select style="background-color: #ffffa0" name="country" id="country"> 
     <option>Select Country</option> 
     <option value="223" selected="selected">USA</option> 
     <option value="224">Canada</option> 
     <option value="225">England</option> 
     <option value="226">Ireland</option> 
    </select> 
<div id="state"> 
    <select style="background-color: #ffffa0" name="state" id="state"> 
     <option>Select State</option> 
     <option value="1">Florida</option> 
     <option value="2">New York</option> 
     <option value="3" selected="selected">Georgia</option> 
     <option value="4">California</option> 
    </select> 
</div> 
<div id="othstate"><input type="text" name="othstate" id="othstate" value="" class="textBox"></div> 

Répondre

2

Au lieu de cacher l'entrée/select, désactivez-le. Cela empêchera l'affichage du formulaire de valeur sur votre serveur.

function locationlist() { 
    $('#othstate').hide().attr("disabled", "disabled"); 
    $('#country').change(function() {   
     var val = $(this).val(); 
     if (val == 223) { 
     $('#state').val('').show().removeAttr("disabled"); 
      $('#othstate').hide().attr("disabled", "disabled"); 
     }else { 
      $('#state').val('').hide().attr("disabled", "disabled"); 
      $('#othstate').show().removeAttr("disabled"); 
     } 
    }); 
} 
+0

Je vais l'essayer merci, juste une question rapide, je vois que vous avez ajouté désactivé à tous les champs, ne devrait pas être activé à nouveau ou non? Je ne sais pas vraiment de quoi je parle – JasonDavis

+0

Désolé je viens de réaliser le removeAttr je me sens bête lol – JasonDavis

0

J'ai lu deux questions (préciser si je me trompe)

1) avec la page d'inscription, PHP peut recevoir les deux champs remplis.

1> suggestion de Joel Potter fonctionne.


2) réutilisation du code pour une page d'édition

2> il semble que vous avez besoin de PHP pour insérer des valeurs par défaut pour les entrées. À part cela, je ne suis pas sûr s'il y a d'autres problèmes de haut niveau - c'est juste une question de mise en œuvre.

options que je pense de:

= côté client ont sondage de code js (via ajax) serveur pour plus d'informations puis insérez ces valeurs.

côté serveur = PHP peut simplement saisir directement les valeurs pour la saisie de texte. En ce qui concerne les listes déroulantes, je ne sais pas comment définir un choix par défaut dans html < select> tag, mais PHP pourrait insérer du code js pour sélectionner la bonne valeur au chargement de la page, ou PHP pourrait faire le choix par défaut aussi le premier.

+0

Salut, c'est déjà en vigueur, php a les options sélectionnées sur la page, le problème est si elles ont l'Angleterre enregistré comme il pays , même si le php analyse England comme sélectionné, les états américains apparaîtraient toujours sur une page d'édition parce que la liste déroulante d'état vs l'état change UNIQUEMENT quand vous changez physiquement la liste de pays – JasonDavis

Questions connexes