[Résolu] Récupérer les valeurs d'inputs dans un javascript

Récupérer les valeurs d'inputs dans un javascript [Résolu] - HTML/CSS - Programmation

Marsh Posté le 10-07-2007 à 10:09:39    

Bonjour,
 
Je suis actuellement en train de résoudre un problème de formulaire :
 
En gros:
J'ai un formulaire de recherche avec un champ de texte, et un champ select (avec une valeur par défaut).
 
Mon fichier javascript surveille le 'onsubmit' de mon formulaire, et lance la fonction de recherche. Le problème est que, dans javascript, j'arrive pas a récupérer les VALEURS de mes inputs.
 
Par exemple, si je recherche 'toto' avec l'option 'musique', bah j'arrive pas a le récupérer dans mon javascript. Donc ma recherche retourne vide  + vide.
 
J'utilise prototype.js, pour me simplifier la vie, et j'ai testé avec les fonction Form.Element.getValue ... mais ca marche pas non plus.
 
Quelqu'un aurait une idée ?
 
Merci d'avance :)


Message édité par nixnbk le 12-07-2007 à 05:02:19

---------------
I'll feed your skin snacks to my cockatiel!
Reply

Marsh Posté le 10-07-2007 à 10:09:39   

Reply

Marsh Posté le 10-07-2007 à 14:04:39    

getValue ?
Edit: J'ai lu trop vite, et je n'avais pas vu que c'était une listbox et non pas un champ de saisie ordinaire.


Message édité par olivthill le 10-07-2007 à 14:06:55
Reply

Marsh Posté le 10-07-2007 à 23:00:41    

Excusez-moi pour ma réponse tronquée de ce midi.
Peut-être que vous avez trouvé la réponse entre temps.
La question n'est pas très claire, parce qu'il n'y a pas de code associé, et donc on ne sait pas comment sont définis les champs de saisie et la listbox, ni quel code a été écrit pour tenter de récupérer les valeurs.
Quoi qu'il en soit, une méthode courante est d'utiliser
 
     document.GetElementByID("id_associé_au_champ_input" ).value
 
pour récuper la valeur des champs de saisie, et d'utiliser .options[].value pour récupérer la valeur de l'option sélectionnée dans la listbox. Voici un petit exemple :

<html>
<html>
<head>
<script language="JavaScript">
function test_lstbox_item(l1) {
   var nom = document.getElementById("input_name" ).value;
   alert(nom)
   var option_val, option_text;
   if (l1.options.selectedIndex>=0) {
      option_val = l1.options[l1.options.selectedIndex].value;
      alert(option_val);
      option_text = l1.options[l1.options.selectedIndex].text;
      alert(option_text);
   }
}
</script>
</head>
<body>
<form name=myform>
Nom: <input type=text id="input_name" size=20>
<select name="lstbox1" size=1 onchange="test_lstbox_item(this)">
<option value="a">Abricot
<option value="b">Banane
<option value="c" selected>Cerise
<option value="d">Datte
</select>
</form>
</body>
</html>


Message édité par olivthill le 10-07-2007 à 23:02:46
Reply

Marsh Posté le 11-07-2007 à 03:25:27    

J'ai essayé cette fonction ca marche pas :(
 
je vais mettre un peu de code pour que ca soit plus clair :
 
en gros j'ai ce bout de code dans mon search.php :

Code :
  1. <form id="search_form" name="search_form">
  2. <br>
  3. <div id="search_div">
  4. <label for="search" id="search_label"> Search:</label>
  5. <input name="search_input"  type="text" id="search_input"/>
  6. <select name="search_options" id="search_options" size="1">
  7.                         <option selected value="option_default">default</option>
  8.                         <option value="option 1">option 1</option>
  9.                         <option value="option 2">option 2</option>
  10.                         <option value="option 3">option 3</option>
  11.                         <option value="option 4">option 4</option>
  12.                   </select>
  13. <input type="submit" value="Search Now!" name="button" id="search_submit"/>
  14. </div> 
  15. </form>


 
et a coté de ça, j'ai une fonction javascript qui correspond a ça dans mon fichier javascript :

Code :
  1. function showResult()
  2. {
  3. tname=document.getElementById("search_input" ).value;
  4. tcity=document.getElementById("search_options" ).value;
  5. xmlHttp=GetXmlHttpObject();
  6. if(xmlHttp==null)
  7. {
  8.  alert ("Browser does not support HTTP Request" );
  9.  return;
  10. }
  11. var url="getResult.php";
  12. url=url+"?Name="+tname;
  13. url=url+"&City="+tcity;
  14. url=url+"&page=1";
  15. url=url+"&sid="+Math.random();
  16. xmlHttp.onreadystatechange=stateChanged ;
  17. xmlHttp.open("GET",url,true);
  18. xmlHttp.send(null);
  19. }
  20. function stateChanged()
  21. {
  22. if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete" )
  23. {
  24.  document.getElementById("txtResult" ).innerHTML=xmlHttp.responseText ;
  25. }
  26. }
  27. function GetXmlHttpObject()
  28. {
  29. var objXMLHttp=null;
  30. if (window.XMLHttpRequest)
  31. {
  32.  objXMLHttp=new XMLHttpRequest();
  33. }
  34.  else if (window.ActiveXObject)
  35. {
  36.  objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP" );
  37. }
  38. return objXMLHttp;
  39. }
  40. function init(){
  41. Event.observe($('search_div'),'submit',showResult,false);
  42. }
  43. Event.observe(window,'load',init,false);


 
Et en gros la fonction marche, puisque si j'initialise a la main mes deux variables tname et tcity, j'ai un résultat correct.
Le seul probleme est de récupérer les valeurs de search_input et de search_option.
 
Je suis en train d'essayer de bidouiller avec une autre fonction qui récupère les valeurs de search_input et search_option onkeypress et onchange.
Plus d'infos plus tard ^^.


---------------
I'll feed your skin snacks to my cockatiel!
Reply

Marsh Posté le 11-07-2007 à 04:31:35    

J'ai une autre idée pour résoudre mon problème, mais ya encore un blème de variables.
 
Voila : j'appelle une fonction qui modifie la valeur de mes variables des que je change quelque chose dans mon form (en utilisant onkeyup="fonctionjavascript(search_input.value,search_options.value)" et onchange=fonctionjavascript(search_input.value,search_options.value))
 
Cette fonction change juste la valeur de mes variables tname et tcity.
 
Le problème c'est que quand je submit mon form, les valeurs tname et tcity sont réinitialisée a zero.
 
Yaurait un moyen de récupérer ces variables ?

Reply

Marsh Posté le 11-07-2007 à 13:51:09    

Pour récupérer (du côté du serveur, je présume) ces variables modifiées par le javascript (du côté du client), il suffit de les placer dans des champs du "form" qui sera "submité". Pour que ces champs ne gênent pas l'écran, on peut les déclarer avec "type=hidden". Par exemple.
 

...
function ....
{
...
   document.search_form.H_tname.value=tname;
   document.search_form.H_tcity.value=tcity;
 
   search_form.submit();
 
   return true;
}
...
<form id="search_form" name="search_form">
   <input type=hidden id=H_tname value="">
   <input type=hidden id=H_tcity value="">
...
</form>

Reply

Marsh Posté le 12-07-2007 à 05:00:46    

trouvé autre solution, un peu crade, mais qui marche :
Dans mon search.php j'ai :  

Code :
  1. <input name="search_input"  type="text" id="search_input" onkeypress="notallowed(event,search_input.value,search_options.value);"/>
  2. ...
  3. ...
  4. <input type="button" value="Search Now!" name="button" id="search_submit" onclick="showResult(search_input.value,search_options.value,1);"/>


 
 
et dans mon .js... je triche a mort ^^
 

Code :
  1. var xmlHttp;
  2. function notallowed(event,strname,strcity)
  3. {
  4.     // Compatibilité IE / Firefox
  5.     if(!event && window.event) {
  6.         event = window.event;
  7.     }
  8.     // IE
  9.     if(event.keyCode == 13) {
  10.         event.returnValue = false;
  11.         event.cancelBubble = true;
  12.  showResult(strname,strcity,1);
  13.     }
  14.     // DOM
  15.     if(event.which == 13) {
  16.         event.preventDefault();
  17.         event.stopPropagation();
  18.  showResult(strname,strcity,1);
  19.     }
  20. }
  21. function showResult(tname,tcity,tpage)
  22. {
  23. xmlHttp=GetXmlHttpObject();
  24. if(xmlHttp==null)
  25. {
  26.  alert ("Browser does not support HTTP Request" );
  27.  return;
  28. }
  29. var url="getResult.php";
  30. url=url+"?Name="+tname;
  31. url=url+"&City="+tcity;
  32. url=url+"&page="+tpage;
  33. url=url+"&sid="+Math.random();
  34. xmlHttp.onreadystatechange=stateChanged ;
  35. xmlHttp.open("GET",url,true);
  36. xmlHttp.send(null);
  37. }
  38. function stateChanged()
  39. {
  40. if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete" )
  41. {
  42.  document.getElementById("txtResult" ).innerHTML=xmlHttp.responseText ;
  43. }
  44. }
  45. function GetXmlHttpObject()
  46. {
  47. var objXMLHttp=null;
  48. if (window.XMLHttpRequest)
  49. {
  50.  objXMLHttp=new XMLHttpRequest();
  51. }
  52.  else if (window.ActiveXObject)
  53. {
  54.  objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP" );
  55. }
  56. return objXMLHttp;
  57. }
  58. function init(){
  59. Event.observe($('search_div'),'submit',function(e){
  60. } ,false);
  61. }
  62. Event.observe(window,'load',init,false);


 
Voila donc j'explique un peu :
J'ai trouvé un script qui annule l'effet de la touche Entrée dans le input (keycode==13), et au lieu de juste stopper l'effet de la touche entrée, je lui fait lancer la fonction ShowResult, avec les paramètres ^^.
 
Bref, maintenant ça marche. Merci Olivthill pour ton aide, même si ça à pas forcément servi. Je vais quand même tester ta fonction et voir ce que ca donne ;).


---------------
I'll feed your skin snacks to my cockatiel!
Reply

Sujets relatifs:

Leave a Replay

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