出生日期使用下拉列表

时间:2014-04-15 08:33:09

标签: grails

我认为这很容易,但我找不到怎么做。 我需要使用三个下拉列表来实现出生日期选择,我使用grails,最好的方法是什么? 这个问题从几个月开始,如果我选择二月份,我只需要在当天下拉菜单中显示28天,如果我选择11月只显示30天,依此类推。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

尝试<g:datepicker>

E.g:

<g:datePicker name="myDate" value="${new Date()}"
              precision="day" years="${1930..1970}"/>

答案 1 :(得分:0)

为了选择日期,我发现使用自定义标签lib是一个非常好的解决方案。您只需点击一下即可获得日历选择。如果你将它用于出生日期,它可能不是最快的解决方案,但它将它保持在1个选择区域,我认为它更清洁。 创建一个新标签lib:

class JQDatepickerTagLib {

    def jqDatePicker = { attrs, body ->
    def out = out
    def name = attrs.name //The name attribute is required for the tag to work seamlessly with grails
    def id = attrs.id ?: name
    def value = attrs.value
    def displayFormat = attrs.displayFormat
    def datepickerFormat = attrs.datepickerFormat

    def displayFormatString = displayFormat ? displayFormat : "MM/dd/yyyy"
    def datepickerFormatString = datepickerFormat ? datepickerFormat : "mm/dd/yy"
    def dateString = value ? value.format(displayFormatString) : ""

    //Create date text field and supporting hidden text fields need by grails
    out.println "<input type=\"text\" name=\"${name}\" id=\"${id}\" value=\"${dateString}\" />"

    //Code to parse selected date into hidden fields required by grails
    out.println "<script type=\"text/javascript\"> \$(document).ready(function(){"
    out.println "\$(\"#${name}\").datepicker({"
    out.println "onClose: function(dateText, inst) {"
    out.println "if(dateText){"
    out.println "var selDate = \$.datepicker.parseDate('${datepickerFormatString}', dateText);"
    out.println "}"
    out.println "}"
    out.println "});"
    out.println "})</script>"
    }
}

然后只需在您的GSP中添加:

<g:jqDatePicker name="date"></g:jqDatePicker>

和BOOM !!你有一个花哨的日期选择器,将通过任何actionSubmit发送回你的控制器。此日期选择器将返回MM / DD / YYYY,但您可以更改格式,以便单独返回每个值。快乐的编码:)