简单的HTML代码,
<div class="easyui-datebox" style="width:250px;height:30px;"></div>
<div class="easyui-calendar" style="width:250px;height:250px;"></div>
<div class="easyui-timespinner" style="width:250px;height:30px;"></div>
<div class="easyui-datetimebox" style="width:250px;height:30px;"></div>
回调函数,当它们发生变化时,
function setText(raw, parser) {
var date = '';
if(parser) {
try{
date = parser(raw);
}
catch(e) {
date = e;
}
}
$('.easyui-textbox').textbox(
'setText',
'Raw: ' + raw + ', Parsed: ' + date + '\n' + $('.easyui-textbox').textbox('getText'));
}
$('.easyui-datebox').datebox({
onChange: function(newVal) {
setText(newVal, $.fn.datebox.defaults.parser);
}
});
$('.easyui-timespinner').timespinner({
onChange: function(newVal) {
setText(newVal, $.fn.timespinner.defaults.parser);
}
});
$('.easyui-datetimebox').datetimebox({
onChange: function(newVal) {
setText(newVal, $.fn.datetimebox.defaults.parser);
}
});
$('.easyui-calendar').calendar({
onChange: function(newVal) {
setText(newVal);
}
});
使用datebox
,其$.fn.datebox.defaults.parser
按预期工作,使用calendar
,它可以为您完成工作,并且它已经是回调中的日期,以及在current
属性中。
但是对于datetimebox
和timespinner
,我们在jquery.easyui.min.js
中得到了一个模糊的错误,
TypeError: $.data(...) is undefined
这里的文档并不是很好,我无法找到EasyUI
的未压缩版本来处理解析器中出错的地方。
所以,正如标题所示,我如何从EasyUI DateTimeBox
和TimeSpinner
获得真实日期,就像我能够{{1} }和Calendar
?
答案 0 :(得分:0)
虽然它仍然是压缩的,但当您查看DateBox
的来源时,您会看到问题所在。无论出于何种原因(我将假设它是一个错误),jquery.easyui.min.js
和DateTimeBox
的解析器都使用代码TimeSpinner
,这在适当的上下文中是正常的,但在&#34;静态&#34;中调用函数类似$(this)
的方式,$.fn.datetimebox.defaults.parser(...)
在此上下文中是错误的 this
,它是一个通用this
对象,而不是{{1它期待的对象。
Javascript
和
HTML DOM
是违规行。
要解决此问题,您需要使用Javascript的var _bd1=$(this).datetimebox("spinner").timespinner("options").separator;
方法访问器,这样您就可以设置被调用函数的上下文。
所以,而不是 $ .fn.datetimebox.defaults.parser(的newval)
var opts=$(this).timespinner("options");
而不是 $ .fn.timespinner.defaults.parser(的newval)
call
这样,当内部函数访问$.fn.datetimebox.defaults.parser.call(this, newVal)
时,他们会使用您传递给它们的$.fn.timespinner.defaults.parser.call(this, newVal)
。
使用
中的更改更新了JSFiddle示例https://jsfiddle.net/7pm89dp7/1/
现在,对我而言,这似乎仍然很麻烦,我的直觉告诉我必须有另一个更好的方法来做到这一点,但我当然找不到一个!