有沒有發現,他有一個 Clear 的鏈結,點下去,會將目前的日期輸入方塊上的資料清掉。很重要嗎?如果你的日期輸入方塊,有設定為 readOnly = true 時,這種需求的機會應該就會變高了。那 jQuery UI 的有提供嗎?
目前 jQuery UI 的版本是:1.8.16,很不巧的,沒有,他並沒有 clear 的功能。但如果你真心喜歡一個人的話,理應可以包容對方不足的地方。但前提是,要先努力過,努力甚麼呢?先給他去整形一下吧...
雖然 jQuery UI 目前的版本並沒有提供,但熱心的工程師,總是會想出些「成人之美」的方案。我在 http://bugs.jqueryui.com/ticket/3999 看到了很多人的抱怨,但也發現了一個有建設性的解法,雖然要多寫幾行程式,但能抓到老鼠的都算是好貓啦!
<script type="text/javascript"> $(function(){ $(".pickdate").datepicker({ changeMonth: true, changeYear: true, dateFormat: 'yy/mm/dd', showButtonPanel: true }); // hack to add clear button // 增加清除按鈕 -Start (Ref. http://bugs.jqueryui.com/ticket/3999) //wrap up the redraw function with our new shiz var dpFunc = $.datepicker._generateHTML; //record the original $.datepicker._generateHTML = function (inst) { var thishtml = $(dpFunc.call($.datepicker, inst)); //call the original thishtml = $('<div />').append(thishtml); //add a wrapper div for jQuery context //locate the button panel and add our button - with a custom css class. $('.ui-datepicker-buttonpane', thishtml).append( $('<button class="\ ui-datepicker-clear ui-state-default ui-priority-primary ui-corner-all\ "\>Clear</button>' ).click(function () { inst.input.attr('value', ''); inst.input.datepicker('hide'); }) ); thishtml = thishtml.children(); //remove the wrapper div return thishtml; //assume okay to return a jQuery }; // 增加清除按鈕 -End }); </script>如此折騰一番後,就可以多生出一個 Clear 按鈕了。
測試程式 [下載]
參考:
01:http://bugs.jqueryui.com/ticket/3999
02:Keith Wood,http://keith-wood.name/index.html