Javascript JQuery datepicker只有在脚本中放入alert()时才起作用
我正在用一些输入字段(每行)编写一个jQuery数据表。其中一个字段必须是日期,因此我尝试使用jQuery datepicker来完成该字段的输入 使用模板为每行呈现相关字段:Javascript JQuery datepicker只有在脚本中放入alert()时才起作用,javascript,jquery,jquery-ui,datepicker,Javascript,Jquery,Jquery Ui,Datepicker,我正在用一些输入字段(每行)编写一个jQuery数据表。其中一个字段必须是日期,因此我尝试使用jQuery datepicker来完成该字段的输入 使用模板为每行呈现相关字段: var invoiceDateInputTemplate = '<input class="datepicker" id="InvoiceDate_{0}" name="InvoiceDate_{0}" type="text" />'; 如果我在$(“.datepicker”).datepicker()之前
var invoiceDateInputTemplate = '<input class="datepicker" id="InvoiceDate_{0}" name="InvoiceDate_{0}" type="text" />';
如果我在$(“.datepicker”).datepicker()之前添加一个alert()调用,它的工作方式就像一个champ。。。datepicker初始化后的alert()调用无效
这将导致日期选择器呈现:
$(function() {
alert();
$(".datepicker").datepicker();
});
这会导致DatePicker不呈现(包括以提供示例):
为什么会这样?我是否遗漏了导致DatePicker无法按预期初始化字段的内容?我敢肯定,要让DatePicker正常工作就必须发出警报,这不是标准的操作程序。另外,我想澄清一下,我不认为在datatable构建之后有任何字段被关注。您在datatable中使用了什么?它很可能在附加事件后渲染,在这种情况下,它应该有一个事件,如draw或其他指示渲染数据的事件,请尝试使用以下方法:
$(function() {
$(document).on("focusin",".datepicker",function(){
$(this).datepicker();
});
});
如果它有效,您可以在每次元素获得焦点时改进而不是“重新创建”日期选择器我感觉您遇到了异步问题 最简单的解决方案是将对自定义事件的调用绑定到
datepicker()
,然后在构建datatable后触发该事件。像这样:
$(function() {
// Create data table here
$(window).trigger('datatable.built');
});
$(window).on('datatable.built', function() {
$(".datepicker").datepicker();
});
事实证明,@盖伊找到了解决办法。。。我在setTimeout内设置了函数,它开始正常工作:
setTimeout(function() {
$(".datepicker").datepicker();
},1000);
我早该想到的。。。谢谢@Guy 在js运行之前,
.datepicker
是否明确呈现?试着用setTimeout(function(){$(“.datepicker”).datepicker();},500)来包装它。
你只需要添加一个文档就可以了。你只需要把你的问题包含进去就可以了。是的,我的错,忘记了
$(function() {
// Create data table here
$(window).trigger('datatable.built');
});
$(window).on('datatable.built', function() {
$(".datepicker").datepicker();
});
setTimeout(function() {
$(".datepicker").datepicker();
},1000);