随时随地在jQuery Dialog中添加和初始化jQuery Datepicker

时间:2014-04-22 12:20:34

标签: javascript jquery html jquery-ui datepicker

我在单击按钮时创建了一个jQuery对话框,并且在从另一个DIV克隆的对话框中也创建了日期选择器文本框,但是当我单击文本框时,日期选择器不会按预期弹出。

enter image description here

<div id='searchdialog'>blank div</div>
<div id='search'>
    <input type='text' id='arrivDate' />
    <input type='text' id='deparDate' />
</div>
<button id="popup" onclick="setPopupForm()">Click</button>

function setPopupForm(){
    $('#searchdialog').html($('#search').html());
    $('#searchdialog').find('#arrivDate').attr('id','arrivDate2');
    $('#searchdialog').find('#deparDate').attr('id','deparDate2');

    $('#searchdialog').dialog({
        height: 280,
        width: 740,
        resizable: false,
        modal: true,
        draggable: true
    });

    $('#arrivDate2').datepicker({
        defaultDate: "+7",
        changeMonth: true,
        numberOfMonths: 1,
    });
}

搜索 - 已存在的DIV

searchdialog - 将“搜索”的内容添加到此DIV,并将文本框ID更改为“arrivDate2”和“deparDate2”

单击按钮时,将触发“setPopupForm()”函数并弹出对话框。但是当我点击'arrivDate2'时,datepicker无法打开。我试图在对话框中初始化选择器,但仍然无效。

请帮我解决这个问题。

这里是我试过的上面的JSFIDDLE。 JSFIDDLE

这是我正在研究的真实例子。我试图将Find Hotel中的内容克隆到一个对话框中,并通过随时更改新的内容ID来创建另外两个日期选择器。 EXAMPLE

2 个答案:

答案 0 :(得分:0)

var content = "<div><input type='text' id='arrivDate' /></div>";
    $('#searchdialog').html(content);
    $('#arrivDate').datepicker({
        defaultDate: "+7",
        changeMonth: true,
        numberOfMonths: 1,
    });
    $('#searchdialog').dialog({height: 280, width: 740, resizable: false, modal: true, draggable: true});

首先为arrivDate调用datepicker,然后调用searchdialog进行对话..

FIDDLE DEMO

答案 1 :(得分:0)

您可以尝试将blur简单地应用于输入

var content = "<span id='lala'></span><div><input type='text' id='arrivDate' /></div>";
$('#searchdialog').html(content).blur();
$('#searchdialog').dialog({
    height: 280,
    width: 740,
    resizable: false,
    modal: true,
    draggable: true
});
                /* Here it is */
                /****/
$('#arrivDate').blur().datepicker({
    defaultDate: "+7",
    changeMonth: true,
    numberOfMonths: 1,
});

<强> UPDATED FIDDLE HERE