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 :

contentedit : validation entre le submit et la validation de champs


Sujet :

jQuery

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut contentedit : validation entre le submit et la validation de champs
    Bonsoir, j'ai un souci avec le contenteditable.

    j'ai un bouton "bold" ,

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button/>bold</button>

    je souhaite l'utiliser pour mettre en gras mon texte

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="wysi" >editer moi</div>

    j'écoute cette événement pour essayer de mettre en gars le texte editer moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $('button').on('click',function(e){
            e.preventDefault(); //on stop la validation du bouton caché, sinon il valide le formulaire
            document.execCommand('bold', false,null);
            alert('on a cliquer sur un button');
    });
    j'ai 2 problèmes qui me survient
    - 1 si je clique sur le bouton ça valide le formulaire

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" value="envoyer">

    -2 si je clique sur le bouton ça me dit que ce champs doit être remplis

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="texte" required="" value="" name="titre_billet">

    du coût j'ai bloqué l'événement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e.preventDefault(); //on stop la validation du bouton caché, sinon il valide le formulaire
    maintenant je n'ai plus de problème au niveau de la validation du formulaire et du champs nom rempis , mais le texte ne se met en gras .

    comment je peux m'en sortir ?

    voici le code html

    Code html : 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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
      <div id="menu">
     
                <div id="modal_img">     
     
                    <div class="content">
                        <div id="drop-files" ondragover="return false">
                            Drop Images Here
                        </div>
     
                        <div id="uploaded-holder">
                            <div id="dropped-files">
                                <div id="upload-button">
                                    <a href="#" class="upload">Upload!</a>
                                    <a href="#" class="delete">delete</a>
                                    <span>0 Files</span>
                                </div>
                            </div>
     
                            <div id="extra-files">
                                <div class="number">
                                    0
                                </div>
                                <div id="file-list">
                                    <ul></ul>
                                </div>
                            </div>
                        </div>
     
                        <div id="loading">
                            <div id="loading-bar">
                                <div class="loading-color"> </div>
                            </div>
                            <div id="loading-content">Uploading file.jpg</div>
                        </div>
     
                        <div id="file-name-holder">
                            <ul id="uploaded-files">
                                <h1>Uploaded Files</h1>
                            </ul>
                        </div>
                    </div>
     
                    <a id="no_modal"  href="#">fermer</a>
                </div>
     
                <a id="modal_call" href="#modal_img">image</a>
     
                <button/>bold</button>
     
            </div>
     
     
     
     
            <div id="wysi" >
                editer moi
            </div>
     
            <button id="display">
                cacher
            </button>

    et le code js
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    $(document).ready(function() {
     
        if (!url_image)// ! si il existe pas on le crée, sinon il sera toujour vide 
        {
            var url_image;
        }
     
        $('#display').on('click', function(e) { //on recupère l'evenement click bouton souris
            e.preventDefault(); //on stop la validation du bouton caché, sinon il valide le formulaire
     
            $('#menu').toggle();
            $('#wysi').attr('contenteditable', $('#menu').is(':visible') ? 'true' : 'false');
            //console.log($('#wysi').prop('contenteditable'));
        });
     
        $('#no_modal').on('click', function() { // on recupere le clique pour soit fermer soit ouvrir l'edition contenteditable
            if (url_image != null)
            {
                var html_now = $('#wysi').html(); //on récupère l'html courant
                var html_url = '<img src="http://localhost/test/info/depot/' + url_image + '">';
                $('#wysi').html(html_now + html_url); //on rajoute la balise html et le src
            }
     
        });
     
        //refraichir le contenu si on supprime une image, sinon il garde en mémoire  l'url de l'image
        $('#modal_call').on('click', function() { // on recupere le clique pour soit fermer soit ouvrir l'edition contenteditable
            url_image = null;
        });
     
     
        $('button').on('click',function(e){
            e.preventDefault(); //on stop la validation du bouton caché, sinon il valide le formulaire
            document.execCommand('bold', false,null);
            alert('on a cliquer sur un button');
        });
     
        // Makes sure the dataTransfer information is sent when we
        // Drop the item in the drop box.
        jQuery.event.props.push('dataTransfer');
     
        var z = -40;
        // The number of images to display
        var maxFiles = 5;
        var errMessage = 0;
     
        // Get all of the data URIs and put them in an array
        var dataArray = [];
     
        // Bind the drop event to the dropzone.
        $('#drop-files').bind('drop', function(e) {
     
            // Stop the default action, which is to redirect the page
            // To the dropped file
     
            var files = e.dataTransfer.files;
     
            // Show the upload holder
            $('#uploaded-holder').show();
     
            // For each file
            $.each(files, function(index, file) {
     
                // Some error messaging
                if (!files[index].type.match('image.*')) {
     
                    if (errMessage == 0) {
                        $('#drop-files').html('Hey! Images only');
                        ++errMessage
                    }
                    else if (errMessage == 1) {
                        $('#drop-files').html('Stop it! Images only!');
                        ++errMessage
                    }
                    else if (errMessage == 2) {
                        $('#drop-files').html("Can't you read?! Images only!");
                        ++errMessage
                    }
                    else if (errMessage == 3) {
                        $('#drop-files').html("Fine! Keep dropping non-images.");
                        errMessage = 0;
                    }
                    return false;
                }
     
                // Check length of the total image elements
     
                if ($('#dropped-files > .image').length < maxFiles) {
                    // Change position of the upload button so it is centered
                    var imageWidths = ((220 + (40 * $('#dropped-files > .image').length)) / 2) - 20;
                    $('#upload-button').css({'left': imageWidths + 'px', 'display': 'block'});
                }
     
                // Start a new instance of FileReader
                var fileReader = new FileReader();
     
                // When the filereader loads initiate a function
                fileReader.onload = (function(file) {
     
                    return function(e) {
     
                        // Push the data URI into an array
                        dataArray.push({name: file.name, value: this.result});
     
                        // Move each image 40 more pixels across
                        z = z + 40;
                        var image = this.result;
     
                        // Just some grammatical adjustments
                        if (dataArray.length == 1) {
                            $('#upload-button span').html("1 file to be uploaded");
                        } else {
                            $('#upload-button span').html(dataArray.length + " files to be uploaded");
                        }
                        // Place extra files in a list
                        if ($('#dropped-files > .image').length < maxFiles) {
                            // Place the image inside the dropzone
                            $('#dropped-files').append('<div class="image" style="left: ' + z + 'px; background: url(' + image + '); background-size: cover;"> </div>'); //image en fichier coder 64
     
                        }
                        else {
     
                            $('#extra-files .number').html('+' + ($('#file-list li').length + 1));
                            // Show the extra files dialogue
                            $('#extra-files').show();
     
                            // Start adding the file name to the file list
                            $('#extra-files #file-list ul').append('<li>' + file.name + '</li>');
                        }
                    };
     
                })(files[index]);
     
                // For data URI purposes
                fileReader.readAsDataURL(file);
            });
     
        });
     
        function restartFiles() {
     
            // This is to set the loading bar back to its default state
            $('#loading-bar .loading-color').css({'width': '0%'});
            $('#loading').css({'display': 'none'});
            $('#loading-content').html(' ');
            // --------------------------------------------------------
     
            // We need to remove all the images and li elements as
            // appropriate. We'll also make the upload button disappear
     
            $('#upload-button').hide();
            $('#dropped-files > .image').remove();
            $('#extra-files #file-list li').remove();
            $('#extra-files').hide();
            $('#uploaded-holder').hide();
     
            // And finally, empty the array/set z to -40
            dataArray.length = 0;
            z = -40;
     
            return false;
        }
     
        $('#upload-button .upload').click(function() {
     
            $("#loading").show();
            var totalPercent = 100 / dataArray.length;
            var x = 0;
            var y = 0;
     
            $('#loading-content').html('Uploading ' + dataArray[0].name);
     
            $.each(dataArray, function(index, file) {
     
                $.post('../../../info/wysi/upload.php', dataArray[index], function(data) {
     
                    var fileName = dataArray[index].name;
                    ++x;
     
                    // Change the bar to represent how much has loaded
                    $('#loading-bar .loading-color').css({'width': totalPercent * (x) + '%'});
     
                    if (totalPercent * (x) == 100) {
                        // Show the upload is complete
                        $('#loading-content').html('Uploading Complete!');
     
                        // Reset everything when the loading is completed
                        setTimeout(restartFiles, 500);
     
                    } else if (totalPercent * (x) < 100) {
     
                        // Show that the files are uploading
                        $('#loading-content').html('Uploading ' + fileName);
     
                    }
     
                    // Show a message showing the file URL.
                    var dataSplit = data.split(':');
     
                    if (dataSplit[1] == 'uploaded successfully') {
     
                        var realData = '<li><a href="images/' + dataSplit[0] + '">' + fileName + '</a> ' + dataSplit[1] + '</li>';
                        $('#uploaded-files').append('<li><a href="images/' + dataSplit[0] + '">' + fileName + '</a> ' + dataSplit[1] + '</li>');
                        url_image = dataSplit[0]; //sauvegarde du nouveau nom de fichier
     
                        // Add things to local storage 
                        if (window.localStorage.length == 0) {
                            y = 0;
                        } else {
                            y = window.localStorage.length;
                        }
     
                        window.localStorage.setItem(y, realData);
     
                    } else {
                        $('#uploaded-files').append('<li><a href="images/' + data + '. File Name: ' + dataArray[index].name + '</li>');
                    }
     
                });
            });
     
            return false;
        });
     
        // Just some styling for the drop file container.
        $('#drop-files').bind('dragenter', function() {
            $(this).css({'box-shadow': 'inset 0px 0px 20px rgba(0, 0, 0, 0.1)', 'border': '4px dashed #bb2b2b'});
            return false;
        });
     
        $('#drop-files').bind('drop', function() {
            $(this).css({'box-shadow': 'none', 'border': '4px dashed rgba(0,0,0,0.2)'});
            return false;
        });
     
        // For the file list
        $('#extra-files .number').toggle(function() {
            $('#file-list').show();
        }, function() {
            $('#file-list').hide();
        });
     
        $('#dropped-files #upload-button .delete').click(restartFiles);
     
        // Append the localstorage the the uploaded files section
        if (window.localStorage.length > 0) {
            $('#uploaded-files').show();
            for (var t = 0; t < window.localStorage.length; t++) {
                var key = window.localStorage.key(t);
                var value = window.localStorage[key];
     
                // Append the list items
                if (value != undefined || value != '') {
                    $('#uploaded-files').append(value);
                }
            }
        } else {
            $('#uploaded-files').hide();
        }
     
    });

    je vous remercie d'avance pour la réponse

  2. #2
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 424
    Billets dans le blog
    43
    Par défaut
    Bonsoir,

    J'ai rapidement regardé et comme première remarque, je pense qu'il est utile de donner un ID à ton bouton "bold" dans la partie HTML pour pouvoir ensuite le sélectionner avec JQuery dans la partie Javascript. Ceci devrait d'ailleurs t'éviter la validation de ton formulaire sans ajouter une commande supplémentaire.

    Pour le passage en gras, avec JQuery, sélectionne la balise "#wysi" et applique le style "font-weight: bold" en utilisant .css()

    HTML :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" id="buttonBold" value="bold"/>

    Javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $('#buttonBold').on('click', function(e) {
        $("#wysi").css('font-weight', 'bold')
        alert('on a cliqué sur un bouton');
    });
    http://jsfiddle.net/EZqY4/2/
    Tutoriels et FAQ TypeScript

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    merci de ta réponse

    en utilisant .css()
    si j'enregistre le text dans la base de donnée comment sait t'il que
    le bout de texte que j'ai sélectionné sera en gras?

  4. #4
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 424
    Billets dans le blog
    43
    Par défaut
    La BDD ne pourra pas deviner de genre de chose toute seule.
    Il faut que tu enregistres explicitement ce style dans la BDD.
    Tu peux par exemple récupérer divers styles de la balise #wysi à l'aide de jQuery, puis sauvegarder ces styles via une page PHP qu'on appelera dans une iframe cachée.

    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
    var styles = $("#wysi").css(['font-weight', 'font-style', 'text-decoration']); // bold, italique, souligné
     
    var url = "saveStylesDB.php?"; // ta page PHP sauvegardant les styles dans la BDD
     
    // Ajout des styles en paramètres
    for (i in styles) {
        url += i + "=" + styles[i] + "&";
    }
     
    // Création d'une iframe cachée pointant sur ta page PHP
    htmIframe = document.createElement("iframe");
    htmIframe.id = "saveStylesDB";
    htmIframe.style.visibility = "hidden";
    htmIframe.style.position = "absolute";
    htmIframe.src = url;
    document.body.appendChild(htmIframe);
     
    // Suppression de l'iframe devenue inutile
    $("#saveStylesDB").remove();
    Tutoriels et FAQ TypeScript

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    ok ,

    par contre pour le bouton envoyer je pourrais pas essayer de trouver une solution, car à chaque fois que j'appuie sur l'un des inputs , il me valide le formulaire

    dans la page il y a plein de bouton input,
    il faudrait dire si je clique sur l'un de ces boutons sauf le bouton envoyé,
    je bloque l'envoie.

    si le clique sur seulement ce bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="submit" value="envoyer">
    là je peux valider le formulaire....

  6. #6
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 424
    Billets dans le blog
    43
    Par défaut
    Si tu appliques les reco de mon 1er post, à priori tu ne devrais plus avoir ce pb.
    Tutoriels et FAQ TypeScript

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 222
    Par défaut
    merci du conseil

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

Discussions similaires

  1. Validation formulaire HTML + submit
    Par Benduroy dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 04/12/2012, 09h02
  2. Valider entre +18 ans et -+ 18 ans pour entrer
    Par alainxicluna dans le forum Langage
    Réponses: 5
    Dernier message: 29/09/2011, 17h34
  3. Réponses: 0
    Dernier message: 24/03/2010, 21h43
  4. Réponses: 2
    Dernier message: 05/04/2009, 17h51
  5. Valider le boutton submit d'un formulaire via URL
    Par kdson dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 23/01/2008, 14h20

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