我认为这很容易,但我找不到怎么做。 我需要使用三个下拉列表来实现出生日期选择,我使用grails,最好的方法是什么? 这个问题从几个月开始,如果我选择二月份,我只需要在当天下拉菜单中显示28天,如果我选择11月只显示30天,依此类推。
有什么想法吗?
答案 0 :(得分:4)
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,但您可以更改格式,以便单独返回每个值。快乐的编码:)