我正在使用特定的 jquery datepicker vidget ( http://keith-wood.name/datepick.html )。对特定日历(泰语)的支持是原因。将新的日期选择器应用于现有的逻辑我遇到了这个问题。选择器在 Chrome 和 Safari 浏览器中无法打开(不会出现弹出窗口),但在 IE8 和 Firefox 中运行良好。经过一番调查,我想到附件主题html标签是原因。它写在对它应该附加到的插件的引用中,和标签。我将它附加到标签上。代码如下:
<script type="text/javascript" src="../jquery.calendars.js?v=$version"></script>
<script type="text/javascript" src="../jquery.calendars.plus.js?v=$version"></script>
<script type="text/javascript" src="../jquery.calendars.picker.js?v=$version"></script>
<script type="text/javascript" src="../jquery.calendars.thai.js?v=$version"></script>
jQuery(function() {
jQuery('#deactivation_date').calendarsPicker({
changeMonth: false,
showOtherMonths: true,
selectOtherMonths: true,
showAnim: '',
dateFormat: _dateFormat,
calendar: jQuery.calendars.instance(_userLanguageCode == 'th' ? 'thai' : '', 'en'),
alignment: 'bottom',
renderer: jQuery.extend({}, jQuery.calendars.picker.defaultRenderer,
{
picker: jQuery.calendars.picker.defaultRenderer.picker.
replace(/\{link:prev\}/, '{link:prevJump}{link:prev}').
replace(/\{link:next\}/, '{link:nextJump}{link:next}').
replace(/\{link:clear\}/, '').
replace(/\{link:close\}/, '')
}),
onSelect: function(dates){
}
}
});
});
...
<a href="javascript:void(0)" class="date-pick no-left-padding" id = "deactivation_date">
"DateText" </a>
进一步的调查使我认为在 Chrome 中没有正确附加适当的事件处理程序,因为调试器甚至没有进入“显示”功能。这是在 Chrome 和 Safari 中失败的小部件的可能部分:
var trigger = inst.get('showTrigger');
inst.trigger = (!trigger ? $([]) :
$(trigger).clone().addClass(this._triggerClass)
[inst.get('isRTL') ? 'insertBefore' : 'insertAfter'](target).
click(function() {
if (!$.calendars.picker.isDisabled(target[0])) {
$.calendars.picker[$.calendars.picker.curInst == inst ?
'hide' : 'show'](target[0]);
}
}));
有一个变体可以将所有日期选择器重新附加到不同的标签,但是对于 div/span 将执行内联渲染,并且输入看起来根本不像文本。
请分享您的想法,如果有的话...
提前致谢
jQuery datepicker目前似乎不支持非公历: http ://bugs.jqueryui.com/ticket/5789 不是吗?