2014-04-15 2 views
0

나는 쉽게 할 수 있다고 생각하지만 어떻게 해야할지 모르겠다. 세 개의 드롭 다운 목록을 사용하여 생년월일 선택을 구현해야합니다. 제가 grails를 사용하고 있는데, 어떻게 할 수있는 가장 좋은 방법입니까? 문제가 몇 달 동안 시작됩니다. 2 월을 선택하면 하루 드롭 다운에 28 일만 표시해야합니다. 예를 들어 11 일을 선택하면 30 일만 표시됩니다.드롭 다운 목록을 사용하는 생년월일

아이디어가 있으십니까?

답변

4

시도 <g:datepicker>. 날짜를 선택

예컨대 :

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

감사합니다! 그러나 나는 현재 datepicker를 가지고 있으며 나쁜 고객 경험으로 인해 드롭 다운 목록으로 변경하려고합니다. – nelson687

+2

''는 일, 월, 년에 대한 별도의 드롭 다운을 렌더링합니다. 개인적으로, 나는 이것이 매우 사용자 친화적이라고 생각하지 않지만 정확히 당신이 물어 보았던 것입니다 –

+0

당신이 옳았다는 것이 유감입니다. 그것은 저의 문제를 해결해줍니다, 감사합니다! – nelson687

0

, 나는 꽤 좋은 솔루션이 될 수있는 사용자 정의 태그 lib 디렉토리를 사용하여 발견했다. 클릭 한 번으로 캘린더 선택을받을 수 있습니다. 그것은 당신이 출생의 날짜에 그것을 사용하는 경우 가장 빠른 해결책이되지 않을 수도 있지만 그것은 훨씬 깨끗하다고 ​​생각하는 1 선택 필드에 그것을 유지합니다. 새 태그 lib 디렉토리를 작성 : 당신의 GSP에 간단히

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>" 
    } 
} 

을 그리고이 추가

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

및 붐! 당신은 어떤 행동으로 컨트롤러에 다시 보내질 멋진 날짜 선택기를 가지고 있습니다. 제출하십시오. 이 날짜 선택기는 MM/DD/YYYY를 반환하지만 각 값을 개별적으로 반환하도록 형식을 변경할 수 있습니다. 해피 코딩 :)

관련 문제