我在rails应用中使用google maps api,以便能够通过点击地图来标记对象。单击地图应使用magnific popup gem为对象显示rails表单,并且可以提交表单以创建新对象。此过程将在您第一次单击地图时起作用,但第二次尝试按下弹出窗口上的提交按钮时,不会发生任何事情。按提交按钮应该向我的创建操作发送一个帖子请求并关闭弹出窗口,但这两者都没有发生。下面是相关的js代码:
google.maps.event.addListener(handler.getMap(), 'click', function
(event) {
handleClickEvent(event);
});
handleClickEvent代码
displayPopup(event.latLng.lat(), event.latLng.lng(), <%=current_user.id %>);
var submitButton = document.getElementsByClassName('mfp-close')['submitButton'];
submitButton.onclick = function() {
var text = "<h4> marked by: @<%= current_user.username %> </h4></br> info will load on refresh" ;
createMarker(event.latLng.lat(), event.latLng.lng(), text);
};
巨大的弹出窗口
function displayPopup(lat, lng, user){
$.magnificPopup.open({
items: {
src: '#pothole-popup',
type: 'inline'
},
callbacks: {
change: function() {
this.content[0].children[0][2].value = lat;
this.content[0].children[0][3].value = lng;
this.content[0].children[0][4].value = user;
}}
});
}
标准添加标记
function createMarker(lat, lng, text){
var marker = handler.addMarker({
lat: lat,
lng: lng,
infowindow: text
}, {animation: google.maps.Animation.DROP});
}
弹出的表单:
<%= form_for :pothole, url: potholes_path do |form| %>
<h3>Mark a pothole</h3>
<br>
<%= form.number_field :latitude, step: :any, class: "gone"%>
<%= form.number_field :longitude, step: :any, class: "gone"%>
<%= form.number_field :user_id, class: "gone"%>
<p>
<%= form.label "Comments" %><br>
<%= form.text_field :comment %>
</p>
<p>
<%= form.label "Severity" %><br>
<%= form.select :severity, (1..10) %>
</p>
<%= form.submit "Submit", class: "mfp-close" %>
<% end %>
&#34; mfp-close&#34; class使按钮能够关闭巨大的弹出窗口,但即使这样也不会在第二次单击提交按钮时触发。 http://dimsemenov.com/plugins/magnific-popup/documentation.html#closebtninside
我认为这可能是一个javascript问题,因为嵌套的onClick功能,但我不确定。有什么建议吗?
答案 0 :(得分:0)
我发现了问题,因为某些原因添加了data-disable-with属性所以我需要删除它
submitButton.removeAttribute("data-disable-with");