11484 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous
Pour entrer un code postal, la syntaxe est, si j'ai bien compris

<input type="text" pattern="^\d{5}$">

Quand je veux générer ça par JavaScript , j'écris

inputNode.setAttribute('pattern', '^\d{5}$');

comme ça ne fonctionne pas, je regarde par les outils de debugging et je lis

<input type="text" pattern="/^\d{5}$/">

Sous Firefox JavaScript a ajouté les "/", ce qui démontre que quelqu'un a programmé ça avec sans doute les meilleurs intentions du monde. Personnellement j'aurais effectivement préféré que ce soit la syntaxe, mais ce n'est pas le cas.
Quand j'enlève manuellement les "/", ça marche bien, mais il est impératif dans mon contexte que ce soit généré par JavaScript

Avez vous déjà rencontré ce problème?
Auriez vous une idée pour le contourner? (autre que traiter ça par JavaScript sur "onchange" bien entendu, ce que je ferai si je n'ai pas de meilleure solution)
Merci de votre aide
Modifié par PapyJP (01 Jun 2020 - 18:58)
Je n'ai pas très bien compris ce qui se passe. Il y a sans doute une erreur de ma part.
J'ai remplacé "^\d{5=$" par "^[0-9]{5}$", ce qui est une façon un peu plus longue de dire la m^me chose, ça marche.
Je vais clore le fil... jusqu'à la prochaine Smiley cligne
Intéressant... as tu essayé l'injection avec une autre méthode ? Avec .insertAdjacentHTML() par exemple (regarde la doc) :
tonElement.insertAdjacentHTML('afterend', '<input type="text" pattern="^\d{5}$">');