<html> <head> <title> Saisie de couleur</title> </head> <body> <script language="Javascript"> // mise en place de la couleur function setColor () { var reg = /[0-9a-fA-F]{6}/ // verification: couleur valide? if (reg.test(document.form.color.value)) document.getElementById('couleur').style.backgroundColor = document.form.color.value ; // sinon fond blanc else document.getElementById('couleur').style.backgroundColor = 'FBFBFB' ; } // initialisation setColor() ; </script> <form name="form"> <p id="couleur"> Couleur <input onkeyup="setColor()" maxlength="6" type="text" name="color" size="5" value="EDAAAA"/> </p> </form> </body> </html>
je n'ai pas pris le temps de lire tout ton code, mais ta reg_exp devrait plutot être ainsi : /[0-9A-F]{6}/i
Je l'avais ecrite comme ca, mais je me suis aperçu que les minuscules marchaient aussi...
Ton code est bien mais pour le rendre plus intéressant et plus accessible ( pour ceux qui ne connaisse pas le système hexadécimale ) tu aurais du inclure une fonction qui permet de passer d'un nombre en base 10 à un nombre en base hexadécimale (pour les couleurs). C'est pas si difficile voici comment : function numberToHexa(num) { if (num > 255) return false result = num%16 base = num/16 base = Math.ceil(base-result/16) result = Hexa(result) base = Hexa(base) return base+""+result } function Hexa(number) { switch(number) { case 11: number = "A" case 12: number = "B" case 13: number = "C" case 14: number = "D" case 15: number = "E" case 16: number = "F" } return number } Et pour le reste il suffit de coller se qu'il retourne en tenant compte que la première couleur est la couleur rouge, la deuxième verte et la troisième bleu . Ex : 323232 donnera une couleur ayant 50 de rouge, 50 de vert et 50 de bleu.
je ne vois toujours pas en quoi ma solition serait moins bonne...
Pour répondre à coucou : Ca se vaut, mais je suis parti du principe que si ca marchait avec des minuscules, pour contraindre l'utilisateur à saisir uniquement en majuscule?? Pour répondre à Arto : Je veux bien, mais ta fonction marche avec un seul nombre. Si tu n'en mets qu'une tu ne pourra pas distinguer 12 255 12 et 122 55 12 par exemple. Tu vas ainsi être obligé de présenter 3 zones de saisie différentes.
/i sert à utiliser majuscules et minuscules... Mon expression régulière est équivalente, mais plus interessante car plus courte et donc, plus compréhensible (bien que la tienne ne soit pas compliquée...)
Ma fonction convertie un seul nombre ,mais tu n'as qu'à n'en faire une autre qui va l'utiliser trois fois, c'est pas sorcier de le faire à partir d'un seul input. Tu n'as qu'à faire un split.
Mais alors tu fais comment pour distinguer les combinaisons de chiffres... Je me repete: 12 255 12 et 122 55 12 S'ecrivent tous les 2: 1225512, du moins si tu mets un champs unique... Merci Coucou.. J'avais raté ton /i ;-)
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 873 073 membres 212 nouveaux aujourd'hui 16 151 membres club