Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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
Ruby on rails 是否可以使用“年份”文本框选择日期?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 是否可以使用“年份”文本框选择日期?

Ruby on rails 是否可以使用“年份”文本框选择日期?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我希望创建一个带有日期字段的祖先类型网页,允许用户输入追溯到数字的日期。这使得date_使用下拉框和jquery datepicker进行选择变得非常不友好 除了显示月份和日期的下拉列表外,还有谁知道一种显示年份文本框的好方法吗 我希望使用date_select的“智能”,同时仍然允许用户以更加用户友好的方式(文本框)输入年份 谢谢你能给我的任何帮助 我会在三个选项中选择 1-使用date_仅选择day和month,使用带有javascript的文本字段表示年份 Date_select接受:di

我希望创建一个带有日期字段的祖先类型网页,允许用户输入追溯到数字的日期。这使得date_使用下拉框和jquery datepicker进行选择变得非常不友好

除了显示月份和日期的下拉列表外,还有谁知道一种显示年份文本框的好方法吗

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


谢谢你能给我的任何帮助

我会在三个选项中选择

1-使用date_仅选择day和month,使用带有javascript的文本字段表示年份

Date_select接受:discard_year选项,如果将其设置为true,则年份字段将呈现为隐藏的_字段,因此没有选择/下拉列表

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

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

2-只选择日期和月份以及文本字段

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

3-使用日期\使用Choosen选择并添加额外功能

如往常一样放置日期,并设置所需的开始年份和结束年份,然后用choosen select替换所选内容,choosen select包含一个文本字段,用于在所选内容的年份之间进行搜索

Choosen为您提供了一个良好且一致的外观,几乎是交叉浏览器(没有在旧的IE版本上进行测试),您获得了用户友好的文本输入,并且,如果禁用javascript,用户仍然有三个选择


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

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

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

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


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

尝试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>

变量日期字段=
document.getElementsByName('祖先[出生日期(1i)])[0];
var new_html='(f.object.birth_date.strftime(“%Y”)rescue”“)%>;
date\u field.outerHTML=新的\u html;

(欢迎改进)

如果选择Rails上的改进选项,那么这就是确定的方法。我在考虑你的#2选项,但得出结论认为这将是一项艰巨的工作,因为你必须同时处理
新建
编辑
案例。对于一个简单、微创的JS解决方案,我认为改变字段类型应该像我在回答中所说的那样有效。arieljuod-使用插件的负面影响是什么?我不认为这有什么负面影响,我说也许你不想使用插件,因为我不知道你是否想要它(有些人可能更喜欢实现他们所需要的,以优化代码以满足他们的需求)。试试看(这真的很容易),看看它是否符合你的需要。