2 actions sur 1 formulaire : onChange sur <select> + onSubmit

fabouse Messages postés 4 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 9 octobre 2008 - 9 oct. 2008 à 17:51
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 9 oct. 2008 à 18:29
Bonjour à tous,

Je rencontre un problème avec l'implémentation de google map api dans une de mes pages.

Je souhaite lancer 2 fonctions javascript à partir d'un seul formulaire.
Lors de la sélection dans la liste déroulante je veux valider mon formulaire pour afficher un résultat et en même temps lancer une fonction js pour google map avec un paramètre de la liste déroulante ... (pas très clair?)

Le problème est que seul le "onChange" est réalisé et pas le "onSubmit"...

le code:
<head>
<script src= "http://maps.google.com/maps?file=api&amp;v=2.x&amp;key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" type="text/javascript"></script>

<script type="text/javascript">
  var map = null;
    var geocoder = null;

    function initialize() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(37.4419, -122.1419), 15);
        geocoder = new GClientGeocoder();
      }
    }

    function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
              map.setCenter(point, 15);
              var marker = new GMarker(point);
              map.addOverlay(marker);
              marker.openInfoWindowHtml(address);
            }
          }
        );
      }
    }
</script>

</head>

<form name="form1" action="#" method="post" onSubmit="showAddress(this.address.value); return false">
Neo advertising offices:&nbsp;
<select name ="loc" id="loc" onChange='this.form.submit();'>

<option value="option1">option1</option>
<option value="option2">option2</option>
<option value="option3">option3</option>

</select>
">
</form>

Merci à ceux qui pourront m'éclairer.
A+

3 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
9 oct. 2008 à 17:59
Bonjour,
mets tout dans une même fonction

<select name="loc" id="loc"
onChange='Fct_Envoi( this);'>
et la fonction Fct_Envoi
//--------------------
function Envoi( this_){

  showAddress( this_.address.value);
  this_.form.submit();
}
un truc dans ce style...
;O)
0
fabouse Messages postés 4 Date d'inscription mercredi 8 décembre 2004 Statut Membre Dernière intervention 9 octobre 2008
9 oct. 2008 à 18:14
j'ai deja testé cela et ça ne fonctionne pas ...

function validOffice(this_){
        showAddress( this_.address.value);
        this_.form.submit();
    }

<select name="loc" id="loc" onChange='validOffice(this);'>
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
9 oct. 2008 à 18:29
1000 excuses pas débuggé en plein, le this que tu passes est en fait le SELECT, il faut
passer le this.form
il faut en fait faire

<select name="loc" id="loc"
onChange='Fct_Envoi( this.form);'>
avec la fonction
//--------------------
function Fct_Envoi(
this_){
  showAddress( this_.address.value);
  this_.submit();

}

;O)
0
Rejoignez-nous