2

我正在寻找创建一个带有日期字段的祖先类型网页,该字段允许用户输入返回到您的数字的日期。这使得带有下拉框的 date_select 和 jquery datepicker 非常不友好。

有谁知道显示年份文本框但显示月份和日期下拉列表的好方法?

我希望使用 date_select 的“智能”,同时仍然允许用户以更用户友好的方式(文本框)输入年份。

感谢你给与我的帮助!

4

3 回答 3

1

非常尊重 Rails 的开发人员,date_select 的可用性几乎在任何情况下都很弱:-)

与其他字段类型不同,date_select 帮助器生成三个具有特殊名称和 ID 的选择标签,每个标签用于年、月和日元素。params这是一种命名约定,它允许控制器代码在处理数组时自动神奇地将输入重新组合成一个(单个)日期。

抱歉,我没有一个方便的命名格式示例(因为我从不使用 date_select),但是如果您查看字段的名称,您可能可以通过使用该:discard_year选项来模仿该行为而无需过多的骇客。这会让你得到月份和日期字段,以及一个包含当前年份的隐藏字段(我认为)。

如果您不反对使用一点 JS 或 CoffeeScript,您可以在加载 DOM 后修改输入字段,方法是删除hidden“type”属性(从而使其成为简单的文本字段)并将其值设置为空。

于 2012-11-16T03:05:26.023 回答
0

我会在三个选项之间进行选择

1-仅对日期和月份使用 date_select,在年份中使用带有一些 javascript 的文本字段

Date_select 接受 :discard_year 选项,如果将其设置为 true,则年份字段将呈现为 hidden_​​field,因此没有选择/下拉http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method- i-date_select

然后你放一个 text_field 并绑定到 keyUp 事件并修改隐藏年份字段的值

最重要的问题是,如果用户禁用了 javascript,则文本字段的值将永远不会设置为隐藏字段,这是一个问题。

2-仅对日期和月份以及文本字段使用 date_select

我不确定您是否可以执行此选项,您可以尝试使用与上面相同的 date_select 并将输入字段的名称设置为年份字段的名称。问题是 date_select 将放置一个具有该名称的隐藏字段,而您放置另一个具有相同名称的字段,并且提交时发送的值可能不是您想要的......您应该看看它是否可行。

3-使用 date_select 并使用 Choosen http://harvesthq.github.com/chosen/添加额外的功能

像往常一样放置 date_select 并设置您想要的 start_year 和 end_year,然后将选择替换为选择的选择,选择的选择包括一个文本字段以在选择的年份之间进行搜索

Choosen 为您提供了几乎跨浏览器的漂亮且一致的外观(未在旧 IE 版本上测试),您可以获得用户友好的文本输入,如果禁用 javascript,用户仍然有三个选择。

我肯定会使用数字 3,但也许您不想添加插件。

于 2012-11-16T03:05:01.257 回答
0

尝试使用 Tom 建议的 Javascript 路由,我想出了如下内容:

<%= f.date_select :birth_date %>
<script>
    var date_field =
        document.getElementsByName('ancestor[birth_date(1i)]')[0];
    var new_html = '<%=
        f.text_field 'birth_date(1i)', :value=>(f.object.birth_date.strftime("%Y") rescue "") %>';

    date_field.outerHTML = new_html;           
</script>

(欢迎改进)

于 2016-08-24T11:42:07.670 回答