|
|
|
|
Posté par
rachidaaa, le lundi 25 juin 2007 à 16:12:50Configuration: Windows XP Internet Explorer 7.0
voici un code qui pourrait t'aider.
mais mon problème c'est qu'il sélectionne automatiquement le mot commençant par les lettres que tu saisis et ce à chaque fois que tu saisies une lettre supplémentaire du mot que tu recherches. Moi j'ai besoin d'un code de ce genre mais sans la sélection. Pour être plus claire, j'ai besoin de saisir les premières lettres d'un mot et la liste multiple doit se positionner sur le premier mot qui commence par les lettres saisies mais sans le sélectionner. Si qq1 peut m'aider à améliorer mon code pour qu'il réponde à mes besoins ça m'arrangerait. Merci Voici le code source : <html> <head> <title> recherche rapide en tapant qq lettre d'une chaine se trouvant dans une liste multiple sans recharger la page</title> </head> <script language="javascript"> /* * fonction qui cherche un texte dans un tableau * @return true si le texte est trouvé * @return false sinon * @param texte : le texte a chercher * @param tab1 : le tableau dans lequel on recherche le texte * */ function searchTexteDansTab(tab1,texte) { maListe = (document.getElementsByName('candidat[]'))[0]; //le champ select qui nous interesse trouve = 0; i = 0; while (i<tab1.length && !trouve) //tant qu'on a pas trouvé et que le parcours du tableau n'est pas fini { if(texte!="") { var aux=new RegExp ("^"+texte,"i"); if(tab1[i].match(aux)) { //alert(tab1[i].match(aux)+"___"+texte); //il faut mettre en subrillance cette entrée dans le champ select du formulaire var aux2 = i; //alert(aux2); maListe.options[aux2].selected=true; trouve=1; } } i++; } } </script> <body> <?php require('../configuration.php'); $link=connexion(); ?> <form name="form1" action="searchListeMultipleSansRecharger.php" method="POST"> <h2><u> Rattachement du candidat sélectionné pour cette mission </u> </h2> <input type="text" onKeyUp="searchTexteDansTab(nomCandidat,this.value)"> <br> <?php $chaine = "select c.nom,c.prenom,c.id,f.intitule from candidat as c,formation as f where c.idformation=f.id order by nom asc "; $req = requeteConsultation($chaine,$link); $nb = mysql_num_rows($req); echo "<select name='candidat[]' size = '15' multiple> </option>"; for($i=0;$i<$nb;$i++) { $nom = mysql_result($req,$i,0); $prenom = mysql_result($req,$i,1); $idCandidat = mysql_result($req,$i,2);$formation = mysql_result($req,$i,3); $nomCandiat[]=$nom; // on remplit le tableau pour faire une rechercher rapide à l'aide des qq 1ères lettres du nom echo "<option value='".$idCandidat."' "; if( !empty($_POST['candidat']) && ($_POST["candidat"] == $idCandidat) ) {echo "SELECTED";} echo ">".$nom."_".$prenom."__".$formation."</option>"; }// boucle sur tous les candidats de la base echo "</select> "; //transformation variable php en Javascript $nomCandidat_js = isset($nomCandiat)? php2js($nomCandiat):"''"; ?> <script language="JavaScript"> var nomCandidat = <?php echo $nomCandidat_js; ?>; </script> </form> </body> </html> |
Une solution sans recharger la page.
Ajax/javascript Sur le onKeyUp de ton champ texte tu appelles une fct Ajax qui lance une requette en arrière plan vers un script PHP qui lira dans la BD les noms commençant par les lettres tapées. La réponse sous forme d'une liste <select serra chargée dans ta page dans un div avec seulement les noms concernés. Tu as peut être vu ça lorsque tu recherches sur Google dans la petite fenêtre en haut de ton navigateur. Pour la solution Ajax vas voir sur Google. Sinon j'ai un exemple. |
Merci pour ta réponse, ça donne des idées.
J'ai entre temps trouvé ma réponse. J'ai juste ajouté la ligne qui suit dans mon code pour que ça réponde exactement à ce que je veux: maListe.options[aux2].selected=false; juste après la ligne : maListe.options[aux2].selected=true; de cette façon, je suis à la bonne position dans la liste multiple mais l'entrée n'est pas sélectionnée |
| 13/11 01h31 | [Dico] Dictionnaires - Définitions - Extensions | Internet utile |
| 16/08 21h40 | Choisir une distribution Linux | Distributions |
| 15/03 20h07 | Documentation officielle Ingres | Ingres |
| 27/03 14h12 | [Webmaster] Coloration syntaxique dans vos pages web | Webmaster |
| 28/09 10h17 | [Webmaster] Faire facilement un espace d'upload | Webmaster |
| 19/10 16h39 | Fonction recherche php avec liste déroulante | 7 |
| 15/05 10h57 | [javascript - PHP] switch valeur liste | 1 |
| 21/07 09h24 | Php forcer listes déroulantes à zéro | 6 |
| 14/06 04h41 | PHP : Rechercher un mot dans la page ? | 4 |
![]() | PSPad - PSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS,... | Catégorie: Développement Licence: Freeware/gratuit |
![]() | PeerGuardian - PeerGuardian est un pare-feu (IP blocker) pour Windows. PeerGuardian 2 intègre le support de listes multiples, de mises à... | Catégorie: Firewall Licence: Open Source |
![]() | PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de... | Catégorie: PHP Licence: Freeware/gratuit |
![]() | Firstpage - First Page 2006 est un éditeur html gratuit et excellent. Il permet de travailler un code HTML en couleur, ainsi que de... | Catégorie: Editeurs HTML Licence: Freeware/gratuit |
![]() | Listo MCH 785 | Catégorie: Chaîne Hi-Fi | 48.90 € Webdistrib |
![]() | Les Razmoket : A | Catégorie: Jeu vidéo PC | |
![]() | Listo WBC-464 Webcam | Catégorie: Webcam | 9.89 € Webdistrib |
![]() | Mission Equitation : A | Catégorie: Jeu vidéo PC | 15.00 € Amazon.fr |