Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Rails-如果ID隐藏,是否删除参数?_Jquery_Html_Ruby On Rails - Fatal编程技术网

Jquery Rails-如果ID隐藏,是否删除参数?

Jquery Rails-如果ID隐藏,是否删除参数?,jquery,html,ruby-on-rails,Jquery,Html,Ruby On Rails,我有一个表单,其中包含一些选择选项,如下所示- <%= select_tag "opt1", options_for_select(OPT.vals,OPT.vals) %> <%= select_tag "opt2", options_for_select(OPT.vals,OPT.vals) %> <%= select_tag "opt3", options_for_select(OPT.vals,OPT.vals) %> 在表单的其他地方,用户可以

我有一个表单,其中包含一些选择选项,如下所示-

<%= select_tag "opt1", options_for_select(OPT.vals,OPT.vals) %>
<%= select_tag "opt2", options_for_select(OPT.vals,OPT.vals) %>
<%= select_tag "opt3", options_for_select(OPT.vals,OPT.vals) %>

在表单的其他地方,用户可以决定是否需要所有3个选项,或者只需要1个或2个。我根据需要使用jQuery.hide和.show来隐藏或显示所选元素,但是当我提交表单时,rails会以任何方式传递隐藏元素的默认值,这是有意义的,因为它们仍然存在,只是对用户隐藏


如何阻止Rails为隐藏元素传递参数?

您可以使用选项{include\u blank:true},默认选项将向服务器发送空白数据。

我认为最好的方法是向隐藏元素添加一个类:

$('option').hide(500,function(){
    $(this).addClass('toBeRemoved');
});
当您想再次显示时:

$('option').show(500,function(){
    $(this).removeClass('toBeRemoved');
});
最后,当您想要提交表单时:

$('form').submit(function(){
    $('.toBeRemoved').remove();
});

Rails与讨论基本无关-问题是“如何阻止浏览器传递隐藏元素的参数?”您可以完全删除元素,或者添加一个隐藏字段,将参数标记为隐藏(服务器端代码可以处理)。