Bonjour,
je contrôle le bon remplissage de mes cases de saisie via un js.
Tout fonctionne bien. Trop bien même...
Effectivement, je voudrais autoriser aussi les lettres à accent.

Je n'y arrive pas malgré mes recherches, pouvez-vous m'aider?

Le bout de code qui concerne ce champs:

                    regexp: {
                        regexp: /^[a-zA-Z0-9 ]+$/,
                        message: 'Aucun caractère spécial n\'est permis dans cette case!'
                    }

Merci!
Hexa

8 réponses


Hello,
Il faut que tu ajoutes tout les accents acceptés dans ta regexp !
Au cas où si tu veux remplacer ces caractères par des caractères sans accent je te file ce lien :
http://www.developpez.net/forums/d1018129/webmasters-developpement-web/general-conception-web/contribuez/regexp-remplacement-suppression-caracteres-accentues-autres/

Hexa
Auteur

Salut,
avant de venir poser ma question ici, j'ai lu beaucoup de sujets dont celui que tu me proposes. J'ai donc essayé tout plein de choses qui m'ont toujours fait planter mon JS.
J'ai bien compris le principe de la regexp. C'est assez déroutant quand on ne maîtrise pas bien le JS car j'ai lu que la regexp est géniale sur certains forums, sur d'autres, il ne faut surtout pas utiliser ça!
Le JS que j'utilise fait parti d'un script que j'ai acheté alors je ne voudrais pas trop le dénaturer en optant pour d'autres morceaux de script.
J'ai donc essayé de rajouter tout les caractères à accent que je veux autoriser dans mon formulaire mais je pense que je foire la syntaxe. J'ai pas compris ce qui doit être entre crochets ou entre parenthèses, ce qui doit se toucher ou non.
Enfin bref. Ce que j'aimerais c'est que quelqu'un me ponde la bonne syntaxe pour autoriser les accents courants dans notre langue, mais surtout avoir une explication pour que je puisse comprendre.

Merci pour ton aide.
Hexa

Essayes cette regexp :

    /^[a-zA-Z0-9ùûüÿàâæçéèêëïîôœÙÛÜŸÀÂÆÇÉÈÊËÏÎÔŒ ]+$/

Je l'ai testé et elle devrait normalement marcher :) Après si tu veux aussi accepter les caractères comme les apostrophes parenthèses, etc..., il te faut les échapper avec \ ;)

Oui elle fonction c'est celle que je possede sur mon site

/^[a-zA-Z0-9áàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ._-\s]+$/
Hexa
Auteur

Bonjour,
merci pour vos réponses.
Ce que vous me proposez est ce que j'ai déjà essayé!
Mais j'ai fait un copier/collé récépéré sur le net. J'ai l'impression que l'encodage n'est pas en ascii quand je fais ça.
Je vais essayer en tappant les lettres une par une et je vous tiens au courant.

Hexa

Hexa
Auteur

Alors voilà,
suivant vos conseils, j'ai édité mon JS. Pour commencer, j'ai simplement ajouté un é pour voir. Bin non, ça ne fonctionne pas!
Mon JS indique qu'un caractère interdit est présent.

jQuery(document).ready(function() { 
function randomNumber(min, max) {
        return Math.floor(Math.random() * (max - min + 1) + min);
    }   
    function generateCaptcha() {
        jQuery('#captchaOperation').html([randomNumber(1, 100), '+', randomNumber(1, 200), '='].join(' '));
    }
    generateCaptcha();  
    jQuery('#editerSiteForm').formValidation({
        framework: 'bootstrap',
        icon: {
                valid: 'glyphicon glyphicon-ok',
                invalid: 'glyphicon glyphicon-remove',
                validating: 'glyphicon glyphicon-refresh'
        },
        fields: {       
            editerSiteTitre: {
                validators: {
                    notEmpty: {
                        message: 'Un titre pour votre site est requis'
                    },
                    stringLength: {
                        min: 6,
                        max: 50,
                        message: 'Cette case doit comporter au minimum 6 caractères et au maximum 50 caractères'
                    },
                    regexp: {
                         regexp: /^[a-zA-Z0-9é ]+$/,
                        message: 'Aucun caractère spécial n\'est permis dans cette case!'
                    }
                }
            },

            editerSiteUrl: {
                validators: {
                    notEmpty: {
                        message: 'Une adresse est requise!'
                    },
                    regexp: {
                        regexp: /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/,
                        message: 'L\'adresse doit être au format http://'
                    }
                }
            },          
            editerSiteDescription: {
                validators: {
                    notEmpty: {
                        message: 'Une description est indispensable, c\'est le but de ce formulaire!'
                    },
                    stringLength: {
                        min: 50,
                        max: 500,
                        message: 'Cette case doit comporter au minimum 50 caractères et au maximum 500 caractères'
                    },
                }
            },
            captcha: {
                validators: {
                    callback: {
                        message: 'Mauvaise réponse',
                        callback: function (value, validator, $field) {
                            var items = jQuery('#captchaOperation').html().split(' '),
                                sum   = parseInt(items[0]) + parseInt(items[2]);
                            return value == sum;
                        }
                    }
                }
            }           
        } // fin du fields
    }) // fin du formValidation
        .on('success.form.fv', function(e) {
        e.preventDefault();
         var $form = jQuery(e.target), // The form instance
         fv = jQuery(e.target).data('formValidation'); // FormValidation instance
            jQuery.ajax({
                url: $form.attr('action'),
                type: 'POST',
                data: $form.serialize(),
                success: function(result) {
                jQuery('#ajoutSiteSuccess').modal('show');
                jQuery("#editerSiteForm").addClass("hidden");               
                }
            });
    });

});

Ce JS est fait par moi selon les directives données par le concepteur du script que j'ai acheté.
Suivant sa doc, il suffit de traiter les champs comme on veut puis d'y ajouter les filtres que l'on veut.

C'est compliqué de lui demander de l'aide car c'est apparement un Coréen. Je ne parle que le Français et un peu d'argot....

Où est-ce que mon assemblage merdouille?
Pourtant, il tourne si bien si je n'ajoute pas de é dans la regexp du champs editerSiteTitre!

Merci pour votre aide.

Essayes avec les caractères unicode ou avec un pattern sous forme de string.
Pour le unicode tu peux essayer \u00E0 pour le é par exemple :)

Hexa
Auteur

Bonjour,
toujours pas!
j'ai fait ça:

                    regexp: {
                        regexp: /^[a-zA-Z0-9 \u00E0 ]+$/,
                        message: 'Aucun caractère spécial n\'est permis dans cette case!'
                    }

Maile impossible de continuer le formulaire. La validation ajax bloque!