在动态创建的文本框上显示datepicker

时间:2012-10-13 13:55:16

标签: jquery html datepicker

我正在尝试使用文本框创建一个div,我想让datepicker显示日期。到目前为止,我能够使用textbox和datepicker动态创建div,但我无法在文本框中显示日期。我在这做错了什么?

代码:

showdate(){
var newDateBoxdiv = $(document.createElement('div')).attr({ class:"EDate", id:"EDate"+i});
newDateBoxdiv.html('<input type="text" id="DisplayTextBox">');

addDateBox();


newDateBoxdiv.insertAfter('.EDate');
}



//Function called inside the above function
addDateBox(){
 $('.EDate').find('input[id^="DisplayTextBox"]').each(function () {

    $(this).datepicker({
        showOn: "button",
        buttonImage: "calendar.png",
        buttonImageOnly: true

    });
    $(this).datepicker({dateFormat: 'dd-M-y'});
    var dateFormat = $( this ).datepicker( "option", "dateFormat" );
    $(this).datepicker( "option", "dateFormat", 'dd-M-y' );

});

3 个答案:

答案 0 :(得分:1)

更新了代码..我注意到你的代码有些错误,包括newDateBoxdiv值。您的文本框DisplayTextBox也没有递增。试试这个。

showdate(){
  var edatenum = $('#increment').val();
  edateinc = "EDate"+edatenum; //increment the value of your div
  var displaytextbox = "DisplayTextBox"+edatenum; //of course you have to increment your textbox also
  $('#increment').val(""+(edatenum+1)); //increment the value of our hidden field
  var newDateBoxdiv = $('<div class="EDate" id="'+edateinc+'"> <input type="text" id="'+displaytextbox+'"></div>');
  newDateBoxdiv.insertAfter(".your_existing_box");  

     addDateBox(); //im not sure if this method already works?
}

<!-- outside of script -->
<input type='hidden' id='increment' value='1'>

答案 1 :(得分:1)

使用.on():

$(selector).live(events,data,handler); // jQuery 1.3 +

$(document).delegate(selector,events,data,handler); // jQuery 1.4.3 +

$(document).on(事件,选择器,数据,处理程序); // jQuery 1.7 +

答案 2 :(得分:0)

使用.live()

http://api.jquery.com/live/