Javascript onClick函数仅在rails magnific popup中运行一次

时间:2018-03-26 05:24:09

标签: javascript ruby-on-rails google-maps onclick magnific-popup

我在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功能,但我不确定。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我发现了问题,因为某些原因添加了data-disable-with属性所以我需要删除它

submitButton.removeAttribute("data-disable-with");