我正在寻找创建一个带有日期字段的祖先类型网页,该日期字段允许用户输入一个返回到该数字的日期。这使得date_select带有下拉框,而jquery datepicker非常不友好。
有谁知道显示年度文本框的好方法,但是月份和日期的下拉菜单?
我希望使用date_select的“智能”,同时仍然允许用户以更加用户友好的方式输入年份(文本框)。
感谢你们给我的任何帮助!
答案 0 :(得分:1)
非常尊重Rails的开发人员,几乎任何情况下date_select的可用性都非常弱:-)
与其他字段类型不同,date_select帮助程序生成三个具有特殊名称和ID的选择标记,分别用于年,月和日元素。它的命名约定允许控制器代码在处理params
数组时自动将输入重新组合成(单个)日期。
抱歉,我没有一个方便的命名格式示例(因为我从不使用date_select),但是如果你看一下这些字段的名字,你可以通过使用来模仿行为而不会有太多的hackery :discard_year
选项。这可以获得包含当前年份的月份和日期字段以及隐藏字段(我认为)。
如果您不反对JS或CoffeeScript,可以在加载DOM后修改输入字段,方法是删除hidden
“type”属性(从而使其成为一个简单的文本字段)将其值设置为空。
答案 1 :(得分:0)
我会在三个选项之间进行选择
1 - 仅在日期和月份使用date_select,在年份使用带有一些javascript的文本字段
Date_select接受:discard_year选项,如果将其设置为true,则year字段将呈现为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并使用选择http://harvesthq.github.com/chosen/
添加额外功能一如既往地设置date_select并设置所需的start_year和end_year,然后用选择的选择替换选择,选择的选择包括一个文本字段,用于在选择年份之间进行搜索
选择给你一个漂亮和一致的外观几乎crossbrowser(没有在旧的IE版本上测试它),你获得用户友好的文本输入,如果禁用javascript,用户仍然有三个选择。 / p>
我肯定会使用3号,但也许你不想添加插件。
答案 2 :(得分:0)
尝试使用Tom建议的Javascript路由,我提出了以下内容:
VolumeChargeCalc = function(meterSize, checkusage){
console.log("Check usage value passed to function is = " + checkusage );
if(meterSize <= 20) {
console.log("METER SIZE HAS PASSED");
if(checkusage == "Y") {
console.log("Check usage has been found");
return [0.8042,0.8042,0.6879,0.6627];
} else {
console.log("no check usage found " + checkusage);
return [2.1442,0.8042,0.6879,0.6627];
}
} else if(meterSize == 999){
return [0.03035,0,0,0];
}
else {
return [0.8042, 0.8042, 0.6879, 0.6627];
}
}
(欢迎改进)