Pré-remplissage de champs de formulaire

Pré-remplissage de champs de formulaire - HTML/CSS - Programmation

Marsh Posté le 07-04-2009 à 17:17:36    

Bonjour,
 
 
Je voudrais savoir s'il existe une solution en javascript ou autres qui permet de pré-remplir les champs d'un site distant.
 
Je souhaiterais afficher une frame comme ci-dessous et remplir les champs en cliquant manuellement sur un bouton.
 
http://sp.codeachat.com/test.php
 
 
José


Message édité par antitrust56 le 07-04-2009 à 17:27:16
Reply

Marsh Posté le 07-04-2009 à 17:17:36   

Reply

Marsh Posté le 07-04-2009 à 17:36:23    

Code :
  1. frameDocument = document.getElementById("myiframe" );
  2. frameDocument = myf.contentWindow.document || myf.contentDocument;
  3. frameDocument.document.getElementById('input').value = "test";


 
(Vite bricolé donc pas sur que çà marche, j'ai fait çà à partir d'un exemple trouvé sur le net en cherchant un peu)

Reply

Marsh Posté le 08-04-2009 à 08:47:18    

J'ai fais des recherches sur internet sans trouver de solutions qui marche.
 
J'ai testé ton script plus haut en remplacer 'myiframe' par le nom de ma frame, mais celà ne fonctionne pas

Reply

Marsh Posté le 08-04-2009 à 10:36:46    

un message d'erreur dans la console ?
Que se passe-t-il exactement ?

Reply

Marsh Posté le 08-04-2009 à 10:49:53    

Code :
  1. myf = document.getElementById("myiframe" );
  2. frameDocument = myf.contentWindow.document || myf.contentDocument;
  3. frameDocument.document.getElementById('input').value = "test";


 
Essaye comme ça ;)

Reply

Marsh Posté le 08-04-2009 à 10:56:22    

ah oui bien vu bidem ;)

Reply

Marsh Posté le 08-04-2009 à 11:03:32    

Merci pour votre aide,  
 
La console d'erreur me renvoi "myf is null" pourtant j'ai bien spécifié le nom de ma frame (voir le code ci-dessous).
 
L'iframe est un formulaire test.
 

Code :
  1. <script type="text/javascript">
  2. function remplir()
  3. {
  4.       myf = document.getElementById("iframe" );
  5.       frameDocument = myf.contentWindow.document || myf.contentDocument;
  6.       frameDocument.document.getElementById('input').value = "test";
  7. }
  8. </script>
  9. <iframe src="http://sp.codeachat.com/form.html" name="iframe" id="iframe" width="100%" height="100%">Votre navigateur ne gère pas les Iframes.</iframe>
  10. Formulaire test à remplir
  11. <form action="" method="post" name="iframe">
  12. Ajouter votre nom : <input type="text" name="monchamp">
  13. Mettre votre email : <input type="text" name="email">
  14. </form>


Message édité par antitrust56 le 08-04-2009 à 11:28:01
Reply

Marsh Posté le 08-04-2009 à 11:13:07    

nan mais "iframe" c'est le nom de ta frame pas l'id [:dawa]
Il faut remplacer ta frame par çà :

Code :
  1. <iframe src="http://sp.codeachat.com/form.html" name="iframe" id="iframe" width="100%" height="100%">Votre navigateur ne gère pas les Iframes.</iframe>


Normalement çà devrait fonctionner.


Message édité par Profil supprimé le 08-04-2009 à 11:13:17
Reply

Marsh Posté le 08-04-2009 à 11:26:57    

Merci Lucas. Ça fait une action mais rien ne se passe, j'ai une erreur frameDocument.document is undefined.
 
J'ai essayé divers combinaisons sans succès.
 
 

Code :
  1. <script type="text/javascript">
  2. function remplir()
  3. {
  4.       myf = document.getElementById("iframe" );
  5.       frameDocument = myf.contentWindow.document || myf.contentDocument;
  6.       frameDocument.document.getElementById('input').value = "test";
  7. }
  8. </script>
  9. <iframe src="http://sp.codeachat.com/form.html" name="iframe" id="iframe" width="100%" height="100%">Votre navigateur ne gère pas les Iframes.</iframe>
  10. Formulaire à remplir
  11. <form action="" method="post" name="form1">
  12. Ajouter votre nom : <input type="text" name="nom">
  13. Mettre votre email : <input type="text" name="email">
  14. </form>


Message édité par antitrust56 le 08-04-2009 à 11:27:16
Reply

Marsh Posté le 08-04-2009 à 11:28:43    

Décidément quand je t'ai fait ce code je devais être fatigué !
La solution est :

Code :
  1. myf = document.getElementById("iframe" );
  2. frameDocument = myf.contentWindow.document || myf.contentDocument;
  3. frameDocument.getElementById('input').value = "test";

Reply

Marsh Posté le 08-04-2009 à 11:28:43   

Reply

Marsh Posté le 08-04-2009 à 11:34:35    

Ca marche, juste une détail lorsque je clique sur le bouton d'action Remplir, "Test" s'affiche dans le champs de ma frame et s'efface ensuite automatiquement.
 
N'est-il pas possible de remplir des champs en définissant le "nom du champs" plutôt que " l'id " ?


Message édité par antitrust56 le 08-04-2009 à 11:39:02
Reply

Marsh Posté le 08-04-2009 à 11:43:31    

euh...
Je te le répète, getElementById accède à un objet par son ID.
Il faut que tu attribue le bon ID à ton input.
Donc si tu fais getElementById('input'), il faut rajouter id="input" dans ton tag input.
Attention : 1 seul ID par objet, c'est obligatoire !

Reply

Marsh Posté le 08-04-2009 à 11:51:25    

Ok Lucas, j'ai bien compris, merci pour ton aide en tout cas.
 
Si jamais un formulaire distant dont je n'ai pas accès n'a de champs "ID", en gros je dois rajouter un bout de code dans le champ avec l'ID du nom de l'objet.
 
Un peu à la manière d'un file_get_contents avec des ajouts de codes non ou y a t-il une solution plus facile pour ça ?


Message édité par antitrust56 le 08-04-2009 à 11:52:56
Reply

Marsh Posté le 08-04-2009 à 12:32:17    

Non, en fait, tu devrais utiliser getElementsByName :

Code :
  1. frameDocument.getElementByNames('nom').value = "test";

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed