在grails scafolding中,通常有3或4個輸入日期的選擇域。我們可以改變'renderEditor.template',以便我們可以使用jquery ui datepicker來代替。jquery ui datepicker而不是grails中的selectfield schaffling
回答
成功集成jQuery UI的日期選擇器內的Grails模板
在renderEditor.template替換 'renderDateEditor' 用下面的代碼:
private renderDateEditor(domainClass, property) {
def precision = (property.type == Date || property.type == java.sql.Date || property.type == Calendar) ? "day" : "minute";
if (!cp) {
return "<g:datePicker name=\"${property.name}\" precision=\"${precision}\" value=\"\${${domainInstance}?.${property.name}}\" />"
} else {
if (!cp.editable) {
return "\${${domainInstance}?.${property.name}?.toString()}"
} else {
def out = new StringBuffer("")
out << "<input type=\"text\" name=\"${property.name}_datepicker\" id=\"${property.name}_datepicker\" value=\"<g:formatDate date=\"\${${domainInstance}?.${property.name}}\" formatName=\"dateonly.date.format\" />\"/>"
out << "<input type=\"hidden\" name=\"${property.name}_day\" id=\"${property.name}_day\" value=\"<g:formatDate date=\"\${${domainInstance}?.${property.name}}\" format=\"dd\" />\"/>"
out << "<input type=\"hidden\" name=\"${property.name}_month\" id=\"${property.name}_month\" value=\"<g:formatDate date=\"\${${domainInstance}?.${property.name}}\" format=\"MM\" />\"/>"
out << "<input type=\"hidden\" name=\"${property.name}_year\" id=\"${property.name}_year\" value=\"<g:formatDate date=\"\${${domainInstance}?.${property.name}}\" format=\"yyyy\" />\"/>"
out << """<g:javascript>
\$(document).ready(function() {
\$("#${property.name}_datepicker").datepicker({
dateFormat:'dd/MM/yy',
onClose: function(dateText, inst) {
var date = new Date(dateText.replace(/(\\d+).(\\d+).(\\d+)/, '\$3/\$2/\$1'));
if (!isNaN(date)) {
\$("#${property.name}_month").val(date.getMonth()+1);
\$("#${property.name}_day").val(date.getDate());
\$("#${property.name}_year").val(date.getFullYear());
}
},
showAnim: "slide",
showOptions: {direction: 'up'},
showOn: "both",
autoSize: true,
constrainInput: true,
showButtonPanel: true
});
})
</g:javascript>"""
return out.toString()
}
}
}
通過這樣做,我們可以用jQuery替換默認的日期選擇器ui的日期選擇器用戶界面
這樣做的一種方式是在JavaScript層上作爲漸進式增強。
它具有保持模板不變的優點。
這可以通過在grails datepicker生成的DOM上添加一個jquery live hook來完成。
繼承人是我在一個項目中提出了:
$("input[type=hidden][value='date.struct']").live(function(evt){
var dateSelect = $(this).next();
var monthSelect = dateSelect.next();
var yearSelect = monthSelect.next();
yearSelect.after("<button>Calendar</button>").next().button({
icons: {
primary: "ui-icon-calendar"
},
text: false
}).on('click',function(evt){
var comp = $(this);
comp.datepicker("dialog",null,function(dateText, inst) {
var dateArray = dateText.split("/");
monthSelect.val(parseInt(dateArray[0]).toString());
dateSelect.val(parseInt(dateArray[1]).toString());
yearSelect.val(parseInt(dateArray[2]).toString());
},{}
,evt).datepicker("widget").css("z-index","9999");
var syncDate = function(){
//Depends on Locale
var newDate = monthSelect.val()+'/'+dateSelect.val()+'/'+yearSelect.val();
comp.datepicker("setDate", newDate);
};
syncDate();
dateSelect.on("change", syncDate);
monthSelect.on("change", syncDate);
yearSelect.on("change", syncDate);
return false;
});
});
是啊當然...我需要一些例子, –
我試過編輯renderEditor.template 我仍然在努力...我希望你的例子會有所幫助.. –
謝謝你的幫助:) 我已經想通了。只是做了一些改變內renderEditor.template –
- 1. Calendar而不是jQuery-UI DatePicker?
- 2. grails 3.0.x jquery-ui datepicker
- 3. jquery UI .datePicker不是函數
- 4. grails 2.4.4 jquery datepicker
- 5. 如何顯示日期而不是年份的jQuery UI datepicker
- 6. Grails和Jquery Datepicker
- 7. jQuery UI的不DatePicker的
- 8. jquery ui datepicker與一個按鈕,而不是輸入框
- 9. jquery ui datepicker - altfield作爲div而不是輸入
- 10. jQuery UI Datepicker數據屬性而不是altField
- 11. jQuery UI datepicker(HTML格式):如何使用monthNames而不是monthNamesShort?
- 12. jquery ui datepicker getDate返回對象而不是日期
- 13. 用戶modernizr強制瀏覽器使用jQuery UI datepicker而不是瀏覽器datepicker?
- 14. angularJS與datepicker相關聯(不是JQuery UI Datepicker,但別的東西)
- 15. jQuery UI中的setDate DatePicker
- 16. jQuery UI中的datePicker不工作
- 17. jquery datepicker UI
- 18. rails jquery ui datepicker
- 19. jQuery UI datepicker maxdate
- 20. jquery ui datepicker beforeShow
- 21. jQuery UI Datepicker。
- 22. JQuery UI datepicker defaulDate
- 23. jQuery UI datepicker css
- 24. jquery ui datepicker
- 25. Jquery UI - Datepicker onChangeMonthYear
- 26. JQuery UI Datepicker SetDate
- 27. jQuery ui datepicker
- 28. jquery ui datepicker dateformat
- 29. ajax datepicker jquery ui
- 30. jquery UI datepicker minDate
看看http://stackoverflow.com/questions/6230852/how-to-override-standard-behavior-of-applicationtaglibcreatelink-and-glink –