11486 sujets

JavaScript, DOM et API Web HTML5

Pages :
Bonjour,

J'ai un code qui permet de vérifier une saisie de nombre, par défaut c'est 19 caractères, en vérité 16 +3 espaces qui donne 19.

Le truc c'est que j'ai des saisies sans espace, donc on passe à 16. J'aimerai avoir un message comme pour 19, c'est possible ?


         if ($('#CardCode').val().length >= 19) {
          if (acceptedCard === true) {
            $('#jq-CardCodeReturn').css({
                                          'color'       : 'red',
                                          'font-weight' : 'bold'
                                        });
            $('#jq-CardCodeReturn').html('Erreur');
          }


Deux cas de figures pour mon cas XXXXXXXXXXXXXXXX ou XXXX XXXX XXXX XXXX.

Il me faut donc un contrôleur qui me fasse les deux avec et sans espace, le code me fait qu'avec les espaces. Je me demande si c'est possible ?
Modifié par Tintin75 (23 Feb 2018 - 10:46)
Merci Laurent, mais le contrôleur laisse le bouton valider sur on par défaut. Normalement si le n° est bon il passe sur on et par défaut il est sur off.
Pour rajouter une condition rien de plus simple que de "rajouter" une condition !


if ($('#CardCode').val().length >= 19)


devient

 if ($('#CardCode').val().length >= 19 || ($('#CardCode').val().length >= 16 && $('#CardCode').val().length <= 19)) 
Modérateur
"Il dit qu'il voit pas le rapport"
upload/1519380903-42161-457476paslrapport.jpg

Plus sérieusement de quel bouton tu parles ? Smiley sweatdrop Tu parlais juste de contrôleur pour 16 ou 19 (16+3spaces) caractères et en supprimant les espaces tu peux vérifier que tu as tout le temps 16 caractère peut importe les espaces. Après tu déclenche ce que tu veux comme action ! Smiley lol Ou alors j'ai pas compris ton soucis
Salut JENCAL,

La ligne de code fonctionne sauf que j'ai pas d'alerte pour ce format XXXXXXXXXXXXXXXX.
Modifié par Tintin75 (23 Feb 2018 - 11:29)
Le client peut rentrer sont n° de cb de deux manières soit il colle les 16 chiffres et il a pas de message d'erreur si il se plante ou il passe par lot de 4 chiffres et si il y a une erreur dans la saisie il a un message.

Ca fonctionne avec les espaces format 19 chiffres, j'aimerai bien que le code fonctionne aussi avec les 16 chiffres sans espace et qu'il est aussi le message d'erreur en cas d'erreur de saisie.

Juste un retour, un message d'alerte.
Modifié par Tintin75 (23 Feb 2018 - 11:29)
if  ($('#CardCode').val().length >= 16 && $('#CardCode').val().length <= 19)) {  
         if (acceptedCard === true) {
            $('#jq-CardCodeReturn').css({
                                          'color'       : 'red',
                                          'font-weight' : 'bold'
                                        });
            $('#jq-CardCodeReturn').html('Erreur ');
          }


Le code fonctionne saut que j'ai toujours pas de message d'erreur si erreur version 16 chiffres. Smiley bawling
Modérateur
Je sais pas si on comprend mal ton besoin...

a écrit :
Le client peut rentrer sont n° de cb de deux manières soit il colle les 16 chiffres et il a pas de message d'erreur si il se plante ou il passe par lot de 4 chiffres et si il y a une erreur dans la saisie il a un message.

si il rentre 16 chiffre il n'y a pas d'erreur.
mais si il rentre 19 (16 + 3 espaces) il peut ou pas en faire une.
Je comprend meme pas ce passage... C'est quoi l'erreur qu'il peut faire avec 19 chiffres et jamais avec 16 ?

a écrit :
Ca fonctionne avec les espaces format 19 chiffres, j'aimerai bien que le code fonctionne aussi avec les 16 chiffres sans espace et qu'il est aussi le message d'erreur en cas d'erreur de saisie.

Ha si il y a des erreurs quand on en rentre 16 aussi. Smiley biggol

hahaha je suis désolé mais c'est pas clair du tout.

Il sort d'ou ton "acceptedCard" ? C'est un autre contrôle au delà du nombre de caractère ?

Si je reprend tu veux regarder s'il y a des erreur de saisie dans 2 cas :
- 16 caractères sans espaces
- 19 caractère dont 3 espaces

Est-ce que ça colle a peut près à ça : https://jsfiddle.net/Undless/zxe34a9x/37/

Le soucis c'est que tu aura des erreurs avec des trucs du genre "XXXX XXXXXXXX XXXX" ou alors tu accepteras "X X X XXXXXXXXXXXXX"...

Je ne comprend pas pourquoi tu ne t'interesse pas seulement au 16 chiffre sans espaces (en plus dans un input number il n'y a pas d'espaces possible si je me trompe pas...)
Sinon tu te fait pas chier avec les espace tu fais un

var _number = $('#CardCode').val().trim()

if  (_number.length != 16 ) {  
         if (acceptedCard === true) {
            $('#jq-CardCodeReturn').css({
                                          'color'       : 'red',
                                          'font-weight' : 'bold'
                                        });
            $('#jq-CardCodeReturn').html('Erreur ');
          }
Salut tintin Smiley cligne

Avant même de chercher plus loin... quel est l'objectif ??
Pour rentrer un numéro de carte Bancaire sur un site, il faut avoir les sécurités nécessaire Smiley smile
Déjà est ce que ton site passe les tests PCI/SASS obligatoire ???
Sinon là tu es en mode fraude Smiley lol

bon ensuite, il n'y a pas 50 méthodes pour faire payer quelqu'un :
1) tu envoi sur une page du site de ton système et tot se fait là bas tu t'occupe de rien.
2) tu intègres un bout de code du site du système et ça permet d'avoir une saisie dans ton site bien que ce ne soit pas lui qui l'héberge..
Jusque là t'as pas de problèmes de sécurité ou autre
3) tu prend toi le numéro de carte et tu l'envoi en APi au système bancaire Smiley smile
Celle là c'est la plus compliquée.
1 - Il faut que ton site soit hyper sécure (sinon bonjour els vol de CB)
2 - Il faut que l'api marchande soit elle aussi super sécure Smiley smile
3 - il faut une bonne maitrise du truc Smiley smile
J'ai monté ce système pour un site dont je m'occupais crois moi que c'est loin d'être simple.
Surtout niveau sécurité

Bon ensuite si tel est ton cas il y a 2 façon de saisir un numéro de cb

Soit tu fais un seul input dans lequel tu ajoute un espace tous les 4 caractères en bloquant pour qu'il n'y ait que des chiffres

Soit tu fais 4 cases de 4 chiffres avec le même blocage mais là tu fais sauter de case en case avec du jS

Dasn tous les cas ton test sert pas à grand chose :s

il faut passer par un test de luhn derrière avant de pouvoir continuer vers l'api marchand, à moins qu'ils ne testent le Num de CB pour toi...

BREF Smiley smile pourrais tu stp mettre des éléments clairs qu'on s'y retrouve Smiley lol
Jencal ton code fonctionne nickel chrome, mais le résultat est identique à celui d'origine.
Modifié par Tintin75 (24 Feb 2018 - 09:29)
Le truc c'est que le client à deux modes de saisie, et j'aimerai qu'il est les deux messages d'erreur.
Modifié par Tintin75 (24 Feb 2018 - 09:29)
Ok alors faisons l'inverse !

il faut transformer ton 16 chars en 19 ..

Ajoute ce listener lié à l'ID de ton input de saisie ! comme ça tu force l'espace.

document.getElementById('TON INPUT ID').addEventListener('input', function (e) {
  e.target.value = e.target.value.replace(/[^\dA-Z]/g, '').replace(/(.{4})/g, '$1 ').trim();
});
 
              <input type="text" class="center size_120" id="CardCode" name="CardCode">
              <span id="jq-CardCodeReturn"></span>
              <

Modifié par Tintin75 (24 Feb 2018 - 09:30)
document.getElementById c'est du JS.....

document.getElementById('CardName').addEventListener('input', function (e) {
  e.target.value = e.target.value.replace(/[^\dA-Z]/g, '').replace(/(.{4})/g, '$1 ').trim();
});

Modifié par JENCAL (23 Feb 2018 - 14:15)
Meilleure solution
Pages :