[英]Rails prevent link_to, execute a javascript function and then trigger link_to
我防止link_to
当我点击它与ev.preventDefault();
在下面的函数中... javascript函数被执行,但是之后我希望单击原始的link_to thats来执行。
<% @categories.each do |category| %>
<%= link_to "#{category.name}", search_path(:search => category.id), :onclick=>'getLocation(event);' %>
<% end %>
function getLocation(ev) {
ev.preventDefault();
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(setGeoCookie,showError);
} else {
alert("Geolocation is not supported by this browser.");
}
}
我不确定这是否可行,但是如果您可以想到另一种实现方式,那将非常有帮助。
如果默认重定向对您不起作用,则可以使用window.location.replace(...)执行lint_to路由,如下所示。
首先找到针对名为route search_path(:search => category.id)
的url,我认为它应该类似于{your_host} /searches?search=category.id并将其传递给JS函数
<% @categories.each do |category| %>
<%= link_to "#{category.name}", search_path(:search => category.id), :onclick=>"getLocation({your_host}/searches?search=#{category.id});" %>
<% end %>
function getLocation(url) {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(setGeoCookie,showError);
} else {
alert("Geolocation is not supported by this browser.");
}
window.location.replace(url);
}
我会稍作调整,以使用链接的href
进行重定向,并使用window.location=
本身移动页面。
这将显示警报并在警报被消除后重定向:
<% @categories.each do |category| %>
<%= link_to "#{category.name}", search_path(:search => category.id), :onclick=>'getLocation(event);' %>
<% end %>
function getLocation(ev) {
ev.preventDefault();
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(setGeoCookie,showError);
} else {
alert("Geolocation is not supported by this browser.");
}
window.location = ev.target.href
}
试试看,让我知道您的生活,尽管我认为应该这样做!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.