1

我有以下问题:

projects/new页面上新项目的表单内有一个复选框,可用于切换is_public项目的属性。我想在创建新项目之前为用户提供一个弹出式 javascript 确认窗口,但前提是选中此特定复选框。

到目前为止,我一直在尝试这样做:

<%= labelled_form_for @project do |f| %>
...
<%= f.check_box :is_public %>
...
<%= submit_tag 'create', :confirm => params[:project][:is_public] == '1' ? "Are you sure you want to create public project?" : nil  %>

但是因为create直到此刻才执行动作,params[:project][:is_public]所以不存在,因此这个解决方案不起作用。

我一直在考虑使用jquery来确定是否选中了此复选框,但我不知道如何将获得jquery的变量传递给 rails。

编辑

这是最终的实现。

$(function(){
  $('#new_project').on('submit.confirm', function(){
    if ($('#project_is_public').prop( "checked" )) {
      if(!confirm("Are you sure you want to create this project as public?")){
        $(this).removeAttr('data-submitted');
        return false;
      }
    }
    return true;
  });
});

submitteddata 属性(防止多次提交表单)阻止了第一次单击cancel按钮后再次提交表单的可能性。

4

1 回答 1

1

您可以在表单提交中确认..

为此,您需要使用 jquery 表单提交进行验证,例如

$(document).ready(function(){
$('#form_id').submit(function(){
   if($('#my_check_box_id').is(":checked")) {
     message = confirm("Are you sure to make this project public?");
      if(message) {
        return true;
      } else {
       return false;
      }
   } else {
     return true;
   }
});
});

希望对你有帮助 :)

编辑

$(document).ready(function(){
    $('#form_id').submit(function(){
       if($('#my_check_box_id').prop( "checked" )) {
         message = confirm("Are you sure to make this project public?");
          if(message) {
            return true;
          } else {
           return false;
          }
       } else {
         return true;
       }
    });
    });
于 2013-10-22T13:48:46.413 回答