3

I have a problem. jQuery Datepicker does not work in a dynamic form, so you can't pick a date. Here is my demo link http://gestionale.odoyabooks.com/sum.php.

JavaScript:

<script>
$(document).ready(function() {
    $('.input_date').on('click', function() {
    $(this).datepicker('destroy').datepicker({showOn:'focus'}).focus();
        });
});
</script>

HTML:

<form action="" method="POST">

<div class="yes">
    <div id="cost1" class="clonedCost" style="display: inline;">
        <table  border="0">
          <tr>          
            <td><label class="date" for="date">Date</label></td>
          </tr>
          <tr>
            <td><input class="input_date" id="date" type="text" name="date[]" /></td>
          </tr>
        </table>
    </div>
    <div id="addDelButtons_cost"><input type="button" id="btnAdd" value=""> <input type="button" id="btnDel" value=""></div>
</div>

</form>
0

2 Answers 2

14

The problem is that when you bind the event initially, the new field doesn't exist.

By applying the on click to the body, with the selector .input_date, it should attach the event to the new element in the dynamic form.

$(function() {
    $('body').on('click','.input_date', function() {
        $(this).datepicker('destroy').datepicker({showOn:'focus'}).focus();
    });
});

Working Example


A better way:

You should initialize the datepicker for the field when you create the element.

$(function() {
    $('.input_date').datepicker();
});

function createNewDatepickerInput() {
    var $newInput = $('<input type="text" name="date123" class="input_date" />');
    $newInput.appendTo("form").datepicker();
}

Working Example

Sign up to request clarification or add additional context in comments.

10 Comments

I think you're overcomplicating things. I don't see why you need to destroy it, re-initialize it and focus after clicking the input box...
@Webberig - I left the code inside unchanged. I just changed the event binding, since I believe that is where the problem is.
i beleive it is better to leave the OPs code unchanged. although mentioning any flaws as a comment helps the guy understand what else he might be doing wrong
I hereby mention that the OPs code + your answer is overcomplicating things. You just need to call datepicker() after creating the input field, not mess around like that on a click event...
Thanks! works great for me! both in Chrome & FF :)
|
1

I don't understand why you're destroying/re-initializing the datepicker. You simply need to call .datepicker() after creating the element. For example:

function createInput() {
    $('<input type="text" name="date" />').appendTo("form").datepicker();
}

Edit: Here's a demo: http://jsfiddle.net/xEmJu/

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.