在发布呼叫期间阻止用户在呈现的选项卡之间移动

时间:2017-09-06 17:23:42

标签: jquery ruby-on-rails ruby ajax

我有一个包含各种标签的页面。在一个选项卡下是上传json文件的功能。此上传使用表单标记完成。

tab4.html.erb:

TimeZone.getAvailableIDs()

在提交表单标签时,我通过routes.rb资源和jquery调用控制器中的函数。

routes.rb中:

    <%= form_tag({action: :add}, multipart: true, id: 'myform') do %>
        <%= file_field_tag 'json_file' %>
    <% end %>
    <button id="upload-button">UPLOAD</button>

Jquery提交表单:

resources :controller do
    collection do
      post 'add'
    end
  end

controller.rb:

$('#upload-button').on('click', function () {
        if ($('#json_file').val()) {
            $('#myform').submit();
        }
    });

此函数将邮件正文中的json文件内容发送到另一个服务。

当这个帖子发生时,我想阻止用户在ruby on rails应用程序中切换他可用的其他选项卡?有没有办法实现这个目标?

我想在表单提交上使用ajax调用,用旋转器显示覆盖,然后调用控制器中的def add file = params[:json_file] file_content = file.read json_content = JSON.parse(file_content, symbolize_names: true) begin // post call redirect_to :some_other_page rescue // post call fails with exception redirect_to // same page with a param to show failure end end 函数,直到完成阻止用户点击任何地方。

有没有更好的解决方案来实现这一目标?

1 个答案:

答案 0 :(得分:0)

我使用@chumakoff建议解决了这个问题。我给了每个标签一个类,并且在提交时阻止了它们的叮当声。重新加载后,行为将恢复为默认状态。

$('#upload-button').on('click', function () {
    if ($('#json_file').val()) {
        preventNavigation();  
        $('#myform').submit();
    }
});

function preventNavigation() {
        $(".tab").on('click', function(){
            alert("Please wait till the upload is complete");
            return false;
        });
}

这会导致用户在发布呼叫期间点击选项卡时收到提醒消息,从而阻止他导航。