javascript - 必须单击按钮两次才能执行功能

标签 javascript html

我试图在单击 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';
}

最佳答案

尝试阻止表单提交事件。

<form onSubmit="return false">

关于javascript - 必须单击按钮两次才能执行功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36240474/

相关文章:

javascript - 在 es6 中,函数参数列表中的花括号有什么作用?

javascript - Vega 中带有调整大小 handle 的时间范围选择器

javascript - 将 github-highlight-selected chrome 扩展扩展到每个网页

html - 仅 CSS Accordion 布局

html - 为什么 Internet Explorer 8 会打印不可见的内容?

html - 任何具有实时(类型)W3C 验证的免费 XHTML CSS 编辑器?

html - 如何使用文本溢出:ellipsis?

javascript - 是否有任何 Backbone.js 教程教 ".sync"与服务器?

javascript - 如何使用 ExtJS 5 Ext.data.Model 字段引用(与 ExtJS 4 中的 ownTo 相比)

javascript - 如何在将 <li> 附加到 <li> 组中时滚动 <li>