2010-12-11 61 views
0

j'ai eu beaucoup de divs à la page avec ids comme ceux-ci:afficher/cacher div id spécifié sous forme d'entrée

<div id="s001">, <div id="s002">, <div id="s003">....<div id="s050">...<div id="s200"> 

Par défaut, tous ces divs sont cachés. Il existe un formulaire de saisie de texte. L'utilisateur tape quelque chose comme s005 dans textarea et div avec id = s005 apparaissent. Si l'entrée suivante est s101 - seul div s101 devient visible et div s005 est masqué à nouveau. Si l'entrée est là, il n'y a pas de div avec id spécifié dans textarea - nous ne restons rien.

donc j'ai besoin d'appliquer et de supprimer des classes de mes divs, mais je ne sais pas comment - avec ou addClass toggleClass Je suis assez nouveau pour jQuery, mais je fait des recherches pour ce cas et trouver ceux-ci:

tête:

<style type="text/css"> 
      .hidden { display: none } 
      .shown { display: block } 
</style> 
corps

:

<input type="text" size="4"> 
<script> 
    $("input").keyup(function() { 
     var value = $(this).val(); 
     $(#value).toggleClass("shown", addOrRemove);    
    }).keyup(); 
</script> 

<div id="s001" class="hidden">s001 contents</div> 
<div id="s002" class="hidden">s002 contents</div> 
<div id="s003" class="hidden">s003 contents</div> 
<div id="s004" class="hidden">s004 contents</div> 
<div id="s005" class="hidden">s005 contents</div> 

Je suis sûr que cette chaîne est mauvaise:

$(#value).toggleClass("shown", addOrRemove);    

Mais je n'ai aucune idée de ce que je devrais changer. Je crois que la comlication principale est que la classe shown doit être supprimée après que le texte dans le formulaire d'entrée soit changé. Une seule div doit être affichée en même temps! remercie tout le monde à l'avance et désolé d'être Noob.

Répondre

0

Voici un exemple qui fonctionne. La seule chose qui ne se passe pas est l'appel à la fonction 'addOrRemove'.

http://jsfiddle.net/pVEus/

Hope this vous permet de démarrer.

Bob

+0

En fait, il y avait quelques problèmes. Essayez celui-ci: http://jsfiddle.net/pVEus/2/ – rcravens

+0

Et voici celui qui inclut la fonction 'addOrRemove'. http://jsfiddle.net/pVEus/3/ – rcravens

+0

addOrRemove n'est pas une fonction (je le pensais d'abord aussi) - le second paramètre de la fonction toggleClass vous permet de passer true/false pour savoir si la classe doit être ajoutée ou enlevé. Il a copié/collé à partir des exemples jQuery où ils ont utilisé une variable de ce nom. – patmortech

0
$("#"+value).toggleClass("shown", addOrRemove); 

devrait faire l'affaire

+0

Unfortinately ce ne est pas .. Dois-je changer quelque chose d'autre dans ce code? Je crois que les classes doivent être commutées - 'montrées 'ou' cachées ', mais n'ont aucune idée de comment le faire. Je vous remercie! –

0

Essayez le suivant (avis j'ai aussi donné votre identifiant un champ de saisie si cela ne souffle pas quand vous avez d'autres champs de saisie sur l'écran):

<input type="text" id="idToShow" size="4"> 
<script> 
$(document).ready(function() { 
    $("#idToShow").keyup(function() { 

     //hide the currently shown div 
     $('div.shown').removeClass('shown').addClass('hidden'); 

     //show the div with id entered in textbox 
     var value = $(this).val(); 
     $('#' + value).removeClass('hidden').addClass('shown'); 

    }).keyup(); 
} 
</script> 
+0

en quelque sorte cela ne fonctionne pas. vérifié et revérifié - ne fonctionne toujours pas. Aucune idée. –

+0

Probablement ne fonctionnait pas parce que ce n'était pas dans $ (document).prêt(). J'étais seulement concentré sur le script lui-même, alors j'ai oublié de le faire. Je l'ai ajouté ci-dessus pour l'exhaustivité. Cela fonctionne. Assurez-vous de définir correctement l'ID de la zone de texte. – patmortech