Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery datepicker只有在脚本中放入alert()时才起作用_Javascript_Jquery_Jquery Ui_Datepicker - Fatal编程技术网

Javascript JQuery datepicker只有在脚本中放入alert()时才起作用

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()之前

我正在用一些输入字段(每行)编写一个jQuery数据表。其中一个字段必须是日期,因此我尝试使用jQuery 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);