IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[DOM] Longueur de chaine


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Par défaut [DOM] Longueur de chaine
    Ds le code ci-dessous, je saisis des caractères dans la boite ID_ville
    A chaque frappe, (onkeyup), la fonction alors est appelée.(affichage de villes commencant par les caractères saisis)

    Je voudrais simplement appeler la fonction uniquement à partir de 4 caractères saisis. Je bute sur la syntaxe. Merci à tous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <INPUT type="text" ID="ID_VILLE" value="" name="nom" />
    <SCRIPT TYPE="text/javascript" LANGUAGE="Javascript"> 
    var text=document.getElementById("ID_VILLE");
     
    function alors() { 
    .......
    } 
     
    text.onkeyup=alors;
    </SCRIPT>

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    text.onkeyup=function(){
        if(text.value.length>3){
            alors();
        }
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Par défaut
    Un grand merci !

    Juste un point...et idependamment de la longueur, mon script fonctionne parfaitement sour Firefox et pas sous IE.

    onkeyup ne serait-il pas reconnu ?

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Si IE reconnait onkeyup
    Essaye peut-être d'éviter les majusculres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" id="ID_VILLE" value="" name="nom" />
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Par défaut
    Merci pour votre patience...

    Le problème persiste en minuscule...
    Je ne vois pas comment utiliser autre chose qu'un onkeyup

    Dès qu'un caractère est saisie dans ma boite, je dois déclencher ma fonction alors()
    Quelle fonction compatible avec tous les navigateurs pour réagir à la frappe d'un caractère saisi ?

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Le problème ne vient pas de onkeyup.
    En revanche, il faudrait que tu montres un peu plus de code (et que tu nous expliques un peu ce qui ne fonctionne pas avec IE) pour que l'on puisse t'en dire plus !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Par défaut
    Volià tout le code.
    On saisis un nom de ville et à partir de la troisième lettre, et pour chaque caractère frappé, on appelle la fonction alors() qui en ajax interroge une table de codes postaux. Un fichier xml est généré puis parsé sur le client pour extraction du code postal. (Il y a plus simple, mais c'est exercice imposé )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <script type="text/javascript" src="prototype.js"></script>
    <input type="text" id="ID_VILLE" value="" name="nom" />
    <SCRIPT TYPE="text/javascript" LANGUAGE="Javascript"> 
    var text=document.getElementById("ID_VILLE");
    function reponse (transport){
     
    		var docXML=transport.responseXML;
    		var nbfils = docXML.firstChild.childNodes.length;
    		var reponse = "";
    		for ($i=0; $i<nbfils; $i++) {
    			if ($i != 0) reponse += "\n";
    			reponse += docXML.firstChild.childNodes[$i].childNodes[0].childNodes[0].nodeValue+'<br>';		
    	}
    document.getElementById("codes").innerHTML=reponse;
    } 
     
    function alors() { 
    	new Ajax.Request('hello.php',{
    			method:'get',
    			parameters: {nom : document.getElementById("ID_VILLE").value},
    			onSuccess: reponse,
    			onFailure:function (){ alert("le fichier hello.php n'existe pas")}
    			});
      } 
    text.onkeyup=function(){
        if(text.value.length>2){
            alors();
        }
    }
    </SCRIPT>
    <p>Codes Postaux<p/>
    <div id="codes"></div>
    et hello.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    if (isset($_GET['nom'])) 
       $nom=$_GET['nom'];
    else echo "Passer un nom en parametre";
     
    $connexionDB=mysql_connect("localhost","root","");
    mysql_select_db("codes_postaux")or die('Erreur de selection '.mysql_error());
    $sql = 'SELECT `code`, `ville` FROM `codes_postaux` WHERE `ville` LIKE \''.$nom.'%\'';
    $resultat=mysql_query($sql) or die('Erreur de requête '.mysql_error());
     
    $tmp='<LesVilles>';
    while ($row = mysql_fetch_assoc($resultat)) {
    $ville=$row['ville'];
    $code=$row['code'];
    $tmp = $tmp ."<Ville><Code>".$code."</Code><Nom>".$ville."</Nom></Ville>";
    }
    $tmp = $tmp ."</LesVilles>";
     
    header('Content-type: text/xml');
    $xml = simplexml_load_string($tmp);
    echo $xml->asXML();
    mysql_close($connexionDB);
    ?>
    Tout cela fonctionne merveilleusement bien avec un onkeyup sur Firefox mais pas sous IE
    Le unkeypress ne fonctionne pas ds les 2 navigateurs.

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var nbfils = docXML.firstChild.childNodes.length;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reponse += docXML.firstChild.childNodes[$i].childNodes[0].childNodes[0].nodeValue+'<br>';
    Attention, IE et FF n'interprètent pas le DOM de la même manière (gestion différente des espaces, sauts de lignes etc.) donc tes firstChild sont susceptibles de ne pas pointer sur les mêmes noeuds, d'où l'erreur avec IE !

    EDIT : plus d'infos dans la FAQ
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Par défaut
    Bon là, je suis completement perdu !
    Dans la Faq, le probleme des espaces se pose pour Firefox et pas pour IE ...

    En ajoutant un alert,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                    var docXML=transport.responseXML;
     
    		var nbfils = docXML.firstChild.childNodes.length;
    		alert(nbfils);
    nbfils est correct sous Firefox mais vaut effectivement 0 sous IE

    Pour info, mon arbre xml est par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <LesVilles>
    −
    <Ville>
    <Code>22600</Code>
    <Nom>LOUDEAC</Nom>
    </Ville>
    −
    <Ville>
    <Code>65510</Code>
    <Nom>LOUDENVIELLE</Nom>
    </Ville>
    −
    <Ville>
    <Code>65240</Code>
    <Nom>LOUDERVIELLE</Nom>
    </Ville>
    −
    <Ville>
    <Code>43320</Code>
    <Nom>LOUDES</Nom>
    </Ville>
    −
    <Ville>
    <Code>31580</Code>
    <Nom>LOUDET</Nom>
    </Ville>
    −
    <Ville>
    <Code>57670</Code>
    <Nom>LOUDREFING</Nom>
    </Ville>
    −
    <Ville>
    <Code>86200</Code>
    <Nom>LOUDUN</Nom>
    </Ville>
    </LesVilles>
    Pour memoire, je veux recuperer que les codes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Expression régulière et longueur de chaine
    Par cbroissa dans le forum Langage
    Réponses: 30
    Dernier message: 23/05/2006, 19h33
  2. [Debutant] Longueur de chaine
    Par georgeabitbol dans le forum Oracle
    Réponses: 2
    Dernier message: 20/03/2006, 16h42
  3. Liste modifiable : longueur de chaine.
    Par pifou02 dans le forum Access
    Réponses: 8
    Dernier message: 09/01/2006, 15h47
  4. [MySQL] controle numérique de longueur de chaine en php
    Par melli dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 07/12/2005, 11h24
  5. BDE, la longueur de chaine ne peut dépasser 256 BYTES
    Par valoji dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/10/2005, 08h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo