2010-06-14 8 views
1

Pourquoi la mise au point n'est-elle pas réglée sur NoteTitle? J'utilise google maps API V3.Impossible de définir le focus sur le champ de saisie dans infoWindow

getNoteForm() renvoie un champ d'entrée "noteTitle".

$ ("# noteTitle"). Focus() fonctionne correctement lorsqu'il est exécuté dans firebug.

J'appelle cette fonction en cliquant sur la carte:

function setNewNoteInfowindow(latlng) { 
if (geocoder) { 
     geocoder.geocode({'latLng': latlng}, function(results, status) { 
    var address = ""; 

    if (status == google.maps.GeocoderStatus.OK) { 
    if (results[1]) { 
    address = results[1].formatted_address; 
      } 
     } 

    newNoteInfowindow = new google.maps.InfoWindow({ 
    content: getNoteForm(latlng, address), 
     size: new google.maps.Size(40,50) 
    }); 

    newNoteInfowindow.open(map, newNoteMarker); 

    google.maps.event.addListener(newNoteInfowindow, 'domready', function() { 
      $("#noteTitle").focus(); 
     }); 

    google.maps.event.addListener(newNoteInfowindow, 'closeclick', function() { 
      newNoteMarker.setVisible(false); 
     }); 
    }); 
} 
} 
+0

Avez-vous essayé de déplacer l'instruction '$ (" # noteTitle "). Focus();' ailleurs? Commencez avec $ (document) .ready peut-être? – HurnsMobile

+0

Oui, mais avec de la chance ... – thomas

+0

Avez-vous vérifié que l'événement était déclenché correctement? ajouter un 'alert ('quelque chose');' pour voir si elle s'exécute .. –

Répondre

1

On dirait que vous ouvrez votre infowindow avant d'ajouter l'écouteur d'événement. L'événement a déjà été déclenché au moment de l'ajout de l'écouteur. Essayez d'inverser l'ordre de open() et addListener()

google.maps.event.addListener(newNoteInfowindow, 'domready', function() { 
      $("#noteTitle").focus(); 
     }); 

    newNoteInfowindow.open(map, newNoteMarker); 
+0

Oui, j'ai essayé aussi ... Pas de chance. – thomas

+2

Résolu comme ça. Ce n'est pas beau, mais ça marche. google.maps.event.addListener (carte, 'click', function (event) { \t placeNewNote (event.latLng). \t setTimeout (function() {$ ("# TitreNote") mise au point()}, 500); }); – thomas

Questions connexes