2014-05-08 50 views
1

我有一个使用jQueryUI的datepicker报表页面的日期范围选择器。我有开始日期两个字段和结束日期两个字段:如何防止某些表单字段在查询字符串中显示?

<%= form_tag stats_path, :method => 'get', :id => "date-range" do %> 
    <%= hidden_field_tag :start_date %> 
    <%= text_field_tag :start_date_display %> 
    <%= hidden_field_tag :end_date %> 
    <%= text_field_tag :end_date_display %> 
    <%= submit_tag "Run it!" %> 
    <% end %> 

目前,符合市场预期,所有4个字段添加到查询字符串作为参数,但我只想要发送的隐藏字段到服务器。文本字段仅用于在用户选择日期时以用户友好的格式(例如,5月5日)显示日期。

有没有办法排除它们?

我不能使用:disabled => true,这将排除它们,因为它使控件不可用。

(我喜欢有查询字符串的日期范围,因此您可以轻松地链接到报告给定的范围内。)

+1

为了避免与表单一起提交的领域,你需要有设置空值名称属性。你不能做一些像:name =>“”? – StuR

+0

@StuR工作!你可以将其作为答案张贴,我会接受吗? –

回答

1

这里是我如何解决它使用的CoffeeScript:

$('#date-range').submit -> 
     $(this).find('input[id*="display"]').each -> 
      $(this).remove() 

但是,一个通过@StuR提出更好的解决方案是为name属性设置为空值:

<%= form_tag stats_path, :method => 'get', :id => "date-range" do %> 
    <%= hidden_field_tag :start_date %> 
    <%= text_field_tag :start_date_display, '', :name => nil %> 
    <%= hidden_field_tag :end_date %> 
    <%= text_field_tag :end_date_display, '', :name => nil %> 
    <%= submit_tag "Run it!" %> 
    <% end %> 
+0

我的两个解决方案的问题是,这些值不仅从URL查询字符串(我也试图实现)中消失,而且还从输入字段中消失。有没有办法保持输入字段中的值,但*不*显示在URL中? – Tintin81

相关问题