2010-12-13 5 views
0

OK, alors voici mon problème, les gens. Je travaille sur un site sur lequel les gens peuvent s'inscrire (x). J'ai un menu déroulant des états pour que les gens choisissent. Basé sur leur sélection d'un état, j'ai une autre liste d'hôpitaux parmi lesquels choisir qui dépend de leur sélection de l'état. Donc, si vous choisissez Hawaii, vous ne verrez que des hôpitaux à Hawaii et pas au Texas, par exemple. J'ai une fonction qui bascule la visibilité en fonction de la valeur d'une case à cocher, mais je n'arrive pas à la faire fonctionner pour la valeur d'une liste déroulante. Des pensées? Merci d'avance. S'il y a une manière plus rapide ou plus standard de résoudre le problème, toute direction dans la bonne direction sera grandement appréciée.Optimisation du code: jQuery, Javascript

Ce que je suis en train d'utiliser:

$(document).ready(function() 
{ $('#stateinjured').change(function() 
    { 
     $('#stateinjuredky').toggle(this.checked); 
    }); 

}); 
<select> 
<option selected="selected">Select your state</option> 
    <option id="stateinjured" >Kentucky</option> 
    <option>West Virginia</option> 
    <option>Ohio</option> 
    <option>Tennessee</option> 
    </select><br/> 
<select> 
<option style="display:none;" id="stateinjuredky" selected="selected">Choose hospital you visited</option> 
    <option>hospital1</option> 
    <option>hospital2</option> 
    <option>hospital3</option> 
    </select> 
+2

Avez-vous envisagé d'utiliser un appel AJAX pour remplir la liste des hôpitaux? – DwB

+0

J'aimerais savoir comment faire cela, mais je ne sais pas: /. J'ai juste commencé à utiliser j requête. De plus, cet ordinateur n'a pas de droits d'administrateur et je ne peux pas installer Apache dessus. Je pourrais tester l'ajax sur mon site Web, bien que – dman

+1

L'appel d'ajax n'est pas nécessaire à moins que ceci soit piloté par base de données. Il DEVRAIT être piloté par la base de données, mais il n'est pas requis autrement. Ajax est très utile, il vous permet essentiellement d'appeler à distance un autre fichier, qu'il s'agisse de HTML, de texte, de PHP ou d'autre chose. Je vous suggère de passer environ 2 heures à chercher dans JSON et à découvrir comment '$ .ajax()' fonctionne. ---- Si c'est un projet d'école ou quelque chose, vous pouvez simplement faire un tableau javascript des hôpitaux au lieu de recourir à des appels ajax. --- Je dis seulement que vous n'avez pas besoin d'ajax parce qu'il est important de savoir à quoi sert ajax, plutôt que de savoir comment il peut être utilisé. – Incognito

Répondre

0

Vous devriez regarder dans AJAX jQuery, il est rapide et vous n'avez pas besoin d'un serveur local à l'utiliser, vous pouvez utiliser votre serveur Web.

regard ici: http://api.jquery.com/category/ajax/

+0

alors il n'y a pas de bonne solution jQuery alors? Combien de temps faut-il pour se familiariser suffisamment avec AJAX pour effectuer cette tâche en cascade? – dman

+0

Si vous voulez résoudre ce problème avec jQuery, vous finirez par coder pendant un certain temps alors que vous pouvez créer une fonction AJAX en un clin d'œil. Avec le site jquery.com prêt, il ne sera pas très long pour apprendre à connaître la syntaxe AJAX et l'utilisation :) Essayez-le;) –

+0

ok, mais si je ne peux pas comprendre, je vais vous bousiller! :) Merci pour l'aide. – dman

0

Je pense que vous avez les id et le style sur les mauvais éléments. Vous auriez également besoin d'une logique pour déterminer ce qui a été sélectionné, puis afficher la liste appropriée. Le code ci-dessous n'affichera 1 boîte de sélection de la charge de la page, puis en fonction de ce qui est sélectionné affichera la liste demandée:

$(document).ready(function() 
{ 
    $('#stateinjured').change(function() { 
     var selectedOption = $(this + "option:selected").val(); 
     if (selectedOption == "Kentucky") { 
      $("#stateinjuredky").css("display","block"); 
     } 
     //or you could just have the select ids be the state names, then you wouldn't need all these if...else statements 
    }); 
}); 

Alors ...

<select id="stateinjured"> 
    <option selected="selected">Select your state</option> 
    <option>Kentucky</option> 
    <option>West Virginia</option> 
    <option>Ohio</option> 
    <option>Tennessee</option> 
</select> 
<br/> 
<select id="stateinjuredky" style="display: none;"> 
    <option selected="selected">Choose hospital you visited</option> 
    <option>hospital1</option> 
    <option>hospital2</option> 
    <option>hospital3</option> 
</select> 
<!-- more selects for other states --> 

Il existe des moyens plus efficaces certainement de faire cela cependant, comme d'autres l'ont dit.

+0

pouvez-vous me diriger dans la bonne direction quant à ce que l'un de ceux-ci pourrait être (sauf l'AJAX, que je regarde dans)? – dman

+0

Non, l'ajax est principalement ce dont je parle. Vous auriez une deuxième page qui génère les listes en fonction d'un paramètre passé. Ensuite, vous pourriez avoir un div ou quelque chose dans lequel vous chargiez les données de cette deuxième page. À l'aide de l'instruction de chargement jQuery, vous pouvez charger des fragments de page et transmettre des tableaux de données au serveur pour traitement. http://api.jquery.com/load/ – esvendsen