Javascript, fonction dans input value
Résolu
CH4NCE
Messages postés
620
Date d'inscription
Statut
Membre
Dernière intervention
-
matthoffman Messages postés 405 Date d'inscription Statut Membre Dernière intervention -
matthoffman Messages postés 405 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je souhaite utiliser une fonction dans le value d'un bouton input mais je suis trop mauvais, y a quelque chose que je capte pas.
Si vous pouviez m'aider...
J'ai donc
Puis
mon bouton affiche javascript:encodeToHex('ééàç');, au lieu de ééàç.
la fonction n'est pas appelée.
Comment faire ?
Merci
je souhaite utiliser une fonction dans le value d'un bouton input mais je suis trop mauvais, y a quelque chose que je capte pas.
Si vous pouviez m'aider...
J'ai donc
<head> <script type="text/javascript"> function encodeToHex(str){ //...encode en hexa return str; } </script> </head>
Puis
<body><form> <input type="submit" name="suppression" value="javascript:encodeToHex('ééàç');" /> </form></body>
mon bouton affiche javascript:encodeToHex('ééàç');, au lieu de ééàç.
la fonction n'est pas appelée.
Comment faire ?
Merci
A voir également:
- Javascript input value
- Telecharger javascript - Télécharger - Langages
- Input signal not found ✓ - Forum Matériel & Système
- Input not supported - Forum Ecran
- The input value is invalid. - Forum Javascript
- No video input - Forum Windows
5 réponses
Bonjour,
Si tu veux charger automatiquement une valeur dans ton input, tu récupères direct ton input lorsque le JS va se charger en faisant ceci:
<head>
<script type="text/javascript">
document.getElementById('suppression').value = encodeToHex('ééàç');
function encodeToHex(str){
//...encode en hexa
return str;
}
</script>
</head>
Et dans ton HTML:
<body><form>
<input type="submit" id="suppression" name="suppression" />
</form></body>
Si tu veux charger automatiquement une valeur dans ton input, tu récupères direct ton input lorsque le JS va se charger en faisant ceci:
<head>
<script type="text/javascript">
document.getElementById('suppression').value = encodeToHex('ééàç');
function encodeToHex(str){
//...encode en hexa
return str;
}
</script>
</head>
Et dans ton HTML:
<body><form>
<input type="submit" id="suppression" name="suppression" />
</form></body>
Merci beaucoup pour ta réponse.
J'ai réussi à afficher ce que je voulais mais pas comme je veux.
Aussi, je ne suis pas arrivé à faire fonctionner ton code, j'ai modifié comme cela :
Et dans le HTML:
Le problème c'est que j'affiche str au lieu de str
Une remarque c'est que mon formulaire contient le même élément mais traité par php :
Mais je ne l'utilise pas pour le bouton submit car les caractères accentués sont mal affichés (tout est pourtant en utf8) et cela fonctionne dans le .confirm()
merci d'avance
J'ai réussi à afficher ce que je voulais mais pas comme je veux.
Aussi, je ne suis pas arrivé à faire fonctionner ton code, j'ai modifié comme cela :
<head> <script type="text/javascript"> function encodeToHex(str){ //...encode en hexa document.getElementById('suppression').value = out; return; // str; } </script> </head>
Et dans le HTML:
<body><form> <input type="submit" id="suppression" name="suppression" value="" /> <script type="text/javascript">encodeToHex('str')</script> </form></body>
Le problème c'est que j'affiche str au lieu de str
Une remarque c'est que mon formulaire contient le même élément mais traité par php :
<form action="page.php" method="post" onsubmit='return window.confirm("Confirmer la suppression de str ?");'> //Affiche : Confirmer la suppression de str ?
Mais je ne l'utilise pas pour le bouton submit car les caractères accentués sont mal affichés (tout est pourtant en utf8) et cela fonctionne dans le .confirm()
merci d'avance
Oui évidemment je n'avais pas vu les balises form, mais du coup la solution était de charger le script dans ton form, et tu l'as trouvé par toi même ;).
Sans le code de ta fonction encodeHexa() je ne peux pas te dire d'ou vient le problème d'affichage (je pense qu'il vient de ton code JS).
En ce qui concerne les caractères accentués, tu as bien mis cette balise alors si j'ai bien compris et ca ne marche pas ?
Sans le code de ta fonction encodeHexa() je ne peux pas te dire d'ou vient le problème d'affichage (je pense qu'il vient de ton code JS).
En ce qui concerne les caractères accentués, tu as bien mis cette balise alors si j'ai bien compris et ca ne marche pas ?
<meta http-equiv="Content-Type" content="text/HTML; charset=utf-8" />
Merci encore pour ton aide matthoffman.
Oui tout est en utf8. Le fichier est en html5
Voici la fonction javascript
A moins de trouver une solution je vais ré-afficher un simple Supprimer sur le bouton (le nom du truc à supprimer est indiqué dans le texte avant et dans le .confirm() ).
Sinon, pour ceux que ça intéresse éventuellement plus tard, voici la fonction que j'utilise en php
Oui tout est en utf8. Le fichier est en html5
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8" />
Voici la fonction javascript
function encodeToHex(str){ var r=\"\"; var e=str.length; var c=0; var h; while(c<e){ h=str.charCodeAt(c++).toString(16); while(h.length<2) h=h; r+=\"&#x\" +h + \";\"; // r=\"str\"; } document.getElementById('suppression').value = r; return;// r; }
A moins de trouver une solution je vais ré-afficher un simple Supprimer sur le bouton (le nom du truc à supprimer est indiqué dans le texte avant et dans le .confirm() ).
Sinon, pour ceux que ça intéresse éventuellement plus tard, voici la fonction que j'utilise en php
// Convertir une chaine de caractères en sa représentation hexadécimale // (d'après http://codeigniter.com/forums/viewthread/45129/) function texttohex($plain_text) { $retval = ''; $length = strlen($plain_text); for($idx = 0; $idx < $length; $idx++) $retval .= "&#x".str_pad(base_convert(ord($plain_text[$idx]), 10, 16), 2, '0', STR_PAD_LEFT).";"; return $retval; }
En fait, j'ai maintenant le même soucis avec le .confirm(), les caracteres sont enregistrés en UTF8 mais le navigateur pense avoir de l'ISO (symptômes typiques).
Pour résoudre ça :
J'ai modifié la ligne
en
histoire d'être à jour.
Aussi, j'ai ajouté un utf8_decode à l'appel de la fonction php pour afficher dans le confirm()
En sachant que $nom_truc, lors de sa création, passe par une fonction qui vérifie si la chaine est en utf8 et si non, la passe en utf8.
C'est quand même vraiment casse-pied ces encodages.
Je bricole, je bricole.
Pour résoudre ça :
J'ai modifié la ligne
$length = strlen($plain_text);
en
$length = mb_strlen($plain_text);
histoire d'être à jour.
Aussi, j'ai ajouté un utf8_decode à l'appel de la fonction php pour afficher dans le confirm()
texttohex(utf8_decode($nom_truc))et cela fonctionne.
En sachant que $nom_truc, lors de sa création, passe par une fonction qui vérifie si la chaine est en utf8 et si non, la passe en utf8.
C'est quand même vraiment casse-pied ces encodages.
Je bricole, je bricole.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ca doit etre moi, mais j'ai vraiment du mal a comprendre l'utilite de ta fonction.
Tu dis "Le problème c'est que j'affiche
Tu dis "Le problème c'est que j'affiche
strau lieu de str", mais tu passes deja "str" en argument, alors pourquoi te faire du mal a vouloir le convertir pour reecrire la meme chose que tu as deja ?
je demande à afficher str pour l'exemple, mais l'interet est de pouvoir afficher par exemple :
Pour passer n'importe quel caractère, comme des parenthèses, sans faire du traitement cas par cas ou en amont, il est très simple de transformer tous les caractères en hexa ou decimal. Comme ça pas de soucis de compatibilité javascript, php, navigateur, etc.
Dans l'exemple ci-dessus, l'apostrophe et les parenthèses empêchent l'utilisation de l'argument en javascript.
Supprimer l'article str (#commentaire)
Pour passer n'importe quel caractère, comme des parenthèses, sans faire du traitement cas par cas ou en amont, il est très simple de transformer tous les caractères en hexa ou decimal. Comme ça pas de soucis de compatibilité javascript, php, navigateur, etc.
Dans l'exemple ci-dessus, l'apostrophe et les parenthèses empêchent l'utilisation de l'argument en javascript.
Ton probleme doit etre bien particulier alors parce que moi je n'ai aucun soucis de compatibilite meme en utilisant les caracteres speciaux. Tant qu'ils sont duement mis dans une chaine de caractere, celle ci ne sera pas interpretee quant a son contenu. qu'il y ait des "<", ">", " ' ", etc.
Et je ne parle meme pas des caracteres d'echappement evitant des confusions au sein d'une meme string.
Enfin bon tant mieux si tu as resolu ton probleme :)
Et je ne parle meme pas des caracteres d'echappement evitant des confusions au sein d'une meme string.
Enfin bon tant mieux si tu as resolu ton probleme :)