2016-03-26 23 views
2

Ich versuche, ein Popup zu verschwinden, sobald ich auf die Schaltfläche Add Comment klicke, aber ich muss zweimal darauf klicken, damit es funktioniert. Wenn ich das erste Mal klicke, verschwinden die beiden Tasten und erscheinen wieder. Dann, wenn ich es das zweite Mal anklicke, verschwindet es wie es soll und die Funktion funktioniert wie es sollte.Klicken Sie zweimal auf die Schaltfläche, um die Funktion auszuführen

Die Zurück-Taste funktioniert perfekt mit dem Popup verschwindet auf den ersten Klick. Ich gehe davon aus, dass es etwas damit zu tun hat, es innerhalb meiner Kommentarfunktion zu tun, aber ich kann es nicht herausfinden.

HTML-Code:

<div data-role="popup" id="popupComment" data-theme="a" class="ui-corner-all"> 
    <form> 
     <div style="padding:10px 20px;"> 
      <h3>Please add comment</h3> 
      <label for="un" class="ui-hidden-accessible">Comment:</label> 
      <input type="text" name="comment" id="comment" value="" placeholder="Comment" data-theme="a"> 
      <button onclick="goCommenting()" class="ui-btn ui-corner-all ui-shadow ui-btn-b ui-btn-icon-left ui-icon-check">Add Comment</button> 
      <button onclick="document.getElementById('popupComment').style.display='none'; event.preventDefault();" class="ui-btn ui-corner-all ui-shadow ui-btn-b ui-btn-icon-left ui-icon-check">Back</button> 
     </div> 
    </form> 
</div> 

JavaScript-Code:

function goCommenting(){ 

    //alert(document.getElementById("comment").value); 
    var infoWindow = new google.maps.InfoWindow(); 
    var listener1 = map.addListener('click', function(e) { 

       //var comment = document.getElementById("editNameBox").value; 
       placeMarkerAndPanTo(e.latLng, map,comment); 
      }); 


    function placeMarkerAndPanTo(latLng, map) { 
     var commentMarker = new google.maps.Marker({ 
      position: latLng, 
      map: map, 
      draggable:true 
     }); 
     (function (commentMarker) { 
      google.maps.event.addListener(commentMarker, "click", function (e) { 
       //Wrap the content inside an HTML DIV in order to set height and width of InfoWindow. 
       infoWindow.setContent("<div>'"+document.getElementById("comment").value+"'</div>"); 
       infoWindow.open(map, commentMarker); 
      }); 
     })(commentMarker); 

     //(function (commentMarker) { 
      google.maps.event.addListener(
       commentMarker, 
       'drag', 
       function() { 
        //document.getElementById('lat').value = marker.position.lat(); 
        //document.getElementById('lng').value = marker.position.lng(); 
       } 
       ); 
     //})(commentMarker); 

     google.maps.event.removeListener(listener1); 
    } 
    event.preventDefault(); 
    document.getElementById('popupComment').style.display='none'; 
} 
+0

... Ich schätze, Sie erhalten keinen Fehler in der Konsole, richtig? – webeno

+0

etwas funky kann passieren mit Ihrem Code vor der Zeile, die für das Verstecken des Popup verantwortlich ist, weil es auf der Funktion zu setzen macht es sofort verschwinden, anscheinend ([siehe Geige] (https://jsfiddle.net/j3qo23s7/)) – webeno

+0

@webeno Ich habe vergessen, darüber zu erwähnen, ist eine Phonegap App, die ich dafür verwende. Ich bin gerade nach dem Ausführen der App auf einem Android-Handy und es funktionierte gut, so seltsam scheint es nur Auswirkungen auf die App auf dem iPhone. – Antonio

Antwort

-1

Versuche zu verhindern Formularereignis vor.

<form onSubmit="return false"> 
+2

inline 'onsubmit' ist ungefähr so ​​schlecht wie OP's inline' onclick' – ThiefMaster

+0

Nein, das hat nicht funktioniert, ich habe 'event.preventDefault();' am unteren Rand meiner goCommentting() -Funktion, so dass das Submit-Ereignis sowieso verhindert werden sollte, also glaube ich nicht, dass das das Problem ist. – Antonio

+0

Ich denke nicht, dass Ihr 'event.preventDefault()' eigentlich so funktionieren sollte, da Sie das Ereignis nicht wirklich in die Funktion senden (nicht 100% sicher, aber ziemlich sicher, [siehe das Beispiel in der doc auf event.preventDefault()] (https://api.jquery.com/event.preventdefault/)), aber das wäre eine ganz andere Frage, denke ich ... – webeno

Verwandte Themen