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

jQuery Discussion :

Vérification des valeurs d'un array


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Par défaut Vérification des valeurs d'un array
    Bonjour,

    Je voudrai savoir s'il est possible de détecter si une des valeurs contenue dans un array est vide.

    Je m'explique. Je récupère les valeurs d'un formulaire avec la fonction serializeArray. je voudrai vérifier s'il n'y a aucune valeur vide avant de soumettre les données au script php.

    Voilà ce que j'ai déjà codé et qui ne fonctionne pas:
    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
     
    var href = $(this).attr('href');
    var elemt = href.split('-');
    var check = $( elemt[0] ).serializeArray();
    if (checkForm(check) === true) {
                    $.ajax({
                            type: "POST",
                            data: $( elemt[0] ).serialize(),
                            url: elemt[1],
                            cache: false,
                            success:
                            function(ret) {
                                    $(".ui-dialog-content").html(ret);
                            },
                            statusCode: {
                                    404: function() { alert("page not found") }
                            }
                    });
                    alert("validation ok");
            } else alert("Veuillez renseiger tous les champs svp.");
     
    ....
    ....
     
    function checkForm(valueArray) {
            $.each( valueArray, function( key, field ) {
                    alert(field.name + " " + field.value);
                    if ( field.value != "" ) return true;
                    else return false
            });
    }
    je fais forcément quelque chose mal, mais je ne sais pas quoi ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( field.value != "" ) r
    pourquoi value ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Par défaut
    parce que field est un "object". Si j'affiche avec un console filed, il m'affiche object. Pour accéder à la valeur, il faut faire field.value.

    Confirmé par la doc jquery:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    jQuery.each( fields, function( i, field ) {
          $( "#results" ).append( field.value + " " );
        });

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ha tu es dans le serialize ...
    donc field = champs



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function checkForm(valueArray) {
           verif=0;
            $.each( valueArray, function( key, field ) {
                    alert(field.name + " " + field.value);
                    if ( field.val() == "" ) {++verif;}
    });
    return verif==0;
    }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Solution alternative.

    Attention aux champs "hidden" ayant un attribut "name" et pas de valeur, ils sont pris en compte par serializeArray(), ils seront donc signalés comme invalides et l'utilisateur ne peut rien y changer !

    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    .noValid { border: 1px solid red; }

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form id="myFormID">
     
    </form>

    Code JS : 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
    var jObjForm = $( "#myFormID" );
     
    jObjForm.on( "submit", function(){
     
        var tabInvalide = $.map( jObjForm.serializeArray(), function( value, index ){
            if ( $.trim( value.value ).length < 1 ){
                return value;
            }
        });
     
        if ( tabInvalide.length === 0 ){ // valide
     
            /*
             * Supprimer le marquage des champs invalides
             */
             jObjForm.find( "*" ).removeClass( "noValid" );
     
             $.ajax({
                // votre code
             });
     
     
        } else { // invalide
     
            alert( "Vous avez oubliez de remplir " + tabInvalide.length + " champs du formiulaire !");
     
            /*
             * Marquez en rouge les champs invalides
             */
            $.each( tabInvalide, function( i, item ){
               jObjForm.find( '[name=' + item.name + ']' ).addClass( "noValid" );
            });
     
        }
     
        return false;
    });

    Nota bene : en HTML5 il y a l'attribut "required".

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre éclairé
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Par défaut
    Merci pour ces infos, et surtout le nota bene pour le HTML5

    Du coup je me suis renseigné, mais le HTML5 est pour le moment à exclure car personne ne sait me dire si tous les navigateurs utilisés sont compatibles HTML5 lol

    Allez je teste tout ça. merci.

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

Discussions similaires

  1. Récupérer des valeurs Object Array
    Par chillout dans le forum Langage
    Réponses: 2
    Dernier message: 02/09/2013, 14h35
  2. Concaténation des valeurs de array
    Par davels dans le forum C#
    Réponses: 4
    Dernier message: 20/10/2012, 17h00
  3. [MySQL] récupérer des valeurs multiple d'un array
    Par rvm31 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 31/01/2012, 22h54
  4. vérification des valeurs dans un fichier texte
    Par tek.csharp dans le forum C#
    Réponses: 0
    Dernier message: 20/05/2010, 17h13
  5. Réponses: 2
    Dernier message: 28/03/2006, 11h45

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