我遇到以下问题:
在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;
});
});
submitted
数据属性(防止多次提交表单)阻止了首次点击cancel
按钮后再次提交表单的可能性。
答案 0 :(得分: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;
}
});
});