我正在开发一个基于ajax的应用程序,并尝试将jquery datepicker(及其timepicker扩展名)添加到几个表单中。它们提供了我需要的功能。我现在面临的基本问题是处理一个环境,在该环境中,DOM在应用程序中未完成或更好地触发(单击编辑按钮或添加按钮)以生成表单。 因此,整合datepicker绝非易事(或?)。我不能使用文档就绪函数,因为在onload完成时已经完成,onload之后不包含包含datepicker元素的表单。所以我想我通过onclick将datepicker调用包装到函数中,就像这样:
var dp=function(divname, btimeonly) {
// --- if timeonly, use the datetimepicker ui extension otherwise the ui datepicker
var tonly = (btimeonly) ? true : false;
if (tonly) {
return $('#' + divname).datetimepicker({
timeFormat: 'hh:mm',
timeOnly: true
});
} else {
$.datepicker.setDefaults($.datepicker.regional['']);
$('#' + divname).datepicker($.datepicker.regional['de']);
return $('#' + divname).datepicker({ });
}
};
输入字段如下所示
<input type="text" id="newsdate" name="newsdate" maxlength="10" value="' . $data['newsdate'] . '" style="width:200px" onclick="dp(\'newsdate\', false);">
所以这里的基本问题是,我需要在输入字段上单击2次(或者在该输入字段中选项卡以激活日期选择器。我怀疑因为该事件未在第一次注册。
我现在陷入困境,即使在我的ajax环境中也有任何方法可以通过一次点击触发datepicker。
showOn: 'button',
buttonImage: 'images/icon-calendar.gif',
buttonImageOnly: true,
是不可能的,当然不是我调用datepicker的方式。
我可以用不同的方式加载选择器吗?我应该在哪里这样做?或者只是浪费时间在ajax生成的环境中使用jquery,我应该使用原生的javascript函数?我不希望最后,因为我非常喜欢jquery及其功能.Been在其他应用程序中使用它很多次。 因此,在我的ajax生成环境中加载,选择器和元素id(及其有效性)是我想要解决的问题。
非常感谢任何提示。我尝试在stackoverflow上阅读类似的问题,但似乎没有找到解决方案。
谢谢! 安德烈亚斯
答案 0 :(得分:0)
嗯,经过一些更多的挖掘'我自己找到了一个可以使用的解决方案。 我正在使用php / xajax类,有一个允许执行javascript的响应对象的方法addScript()。我现在可以将所有与jquery相关的代码包装到一个javascript函数中,并在响应对象执行后执行该函数。
所以在php ...
...
$responseObj->addScript("finit()");
...
和javascript函数简单地说就是......
function finit() {
$('#newsdate').click(function() {
$(this).datepicker( {} )
});
};
这就是诀窍。以防有人被困在同一点。
但无论如何,如果还有其他办法,那将是互相干扰的。所以不要犹豫不决。