2016-03-26 2 views
2

Я пытаюсь удалить всплывающее окно, как только я нажму кнопку Add Comment, но мне нужно дважды щелкнуть его, чтобы он работал. Когда я нажимаю его, первый раз две кнопки исчезают и снова появляются. Затем, когда я нажимаю его во второй раз, он исчезает, как следует, и функция работает так, как должна.Нужно нажать кнопку дважды для выполнения функции

Кнопка «Назад» отлично работает, когда всплывающее окно исчезает при первом нажатии. Я предполагаю, что это имеет какое-то отношение к попытке сделать это в моей функции комментариев, но я не могу понять это.

HTML код:

<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 код:

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

... Я предполагаю, что вы не ошибаетесь в консоли, правильно? – webeno

+0

что-то фанки может происходить с вашим кодом перед строкой, которая отвечает за скрытие всплывающего окна, потому что поместить ее поверх функции заставляет ее немедленно исчезнуть, видимо ([see fiddle] (https://jsfiddle.net/j3qo23s7/)) – webeno

+0

@webeno Я забыл упомянуть выше, это приложение Phonegap, для которого я использую это. Я только что запустил приложение на Android-телефоне, и он работал нормально, так что, похоже, это просто влияет на приложение на iphone. – Antonio

ответ

-1

Try для предотвращения отправки формы событие.

<form onSubmit="return false"> 
+2

inline 'onsubmit' примерно так же плох, как inline' onclick' OP – ThiefMaster

+0

Нет, это не сработало, у меня есть 'event.preventDefault();' в buttom моей функции goCommenting(), чтобы в любом случае предотвратить событие отправки, поэтому я не думаю, что это проблема. – Antonio

+0

Я не думаю, что ваш 'event.preventDefault()' должен действительно работать таким образом, поскольку вы фактически не отправляете событие в функцию (не на 100% уверены в этом, но довольно уверены, [см. Пример в doc on event.preventDefault()] (https://api.jquery.com/event.preventdefault/)), но это был бы совсем другой вопрос, я думаю ... – webeno

Смежные вопросы