我目前正在将jquery ui datepicker用于两个输入字段。为了调用日历,输入字段必须具有datepicker类。我在javascript中使用for循环来生成输入字段。我将datepicker类添加到了可能会生成的每个输入字段中。但是没有日历出现。在Firebug控制台中,html确实显示输入字段具有datepicker类。现在,如果使用静态输入字段执行此操作,它将正常工作。单击该字段时如何显示日历? Example

在jQuery中,这是我设置类的行:

content += '</select></br>Class Start Date: <input type="text" id="start_date_'+i+'" name="start_date_'+i+'" class="datepicker" />Class End Date: <input type="text" id="end_date_'+i+'" name="end_date_'+i+'" class="datepicker" /><div>';

完整的Jquery代码
<script>
    $(document).ready(function () {
        $('select').change(function() {
            var option = $(this).val();
            showFields(option);
            return false;
        });

        function showFields(option) {
            var content = '';
            for (var i = 1; i <= option; i++) {
                content += '<div id="course_'+i+'"><label>Course # '+i+'</label><br /><label>Course Name:</label> <select id="coursename_'+i+'" name="coursename_'+i+'"><option value="">--- Select ---</option>"'
                    <?php
                        $course_query = $db_con->prepare("SELECT course_id, course_name FROM courses_selection_list ");
                        $course_query->execute();
                        $data = $course_query->fetchAll();
                        foreach ($data as $row) {
                            //dropdown values pulled from database
                            echo 'content += \'<option value="' . $row['course_id'] . ':'.$row['course_name'].'">' . $row['course_name'] . '</option>\';';
                        }
                    ?>
                '"';

                content += '</select></br>Class Start Date: <input type="text" id="start_date_'+i+'" name="start_date_'+i+'" class="datepicker" />Class End Date: <input type="text" id="end_date_'+i+'" name="end_date_'+i+'" class="datepicker" /><div>';

            }

            $('#course_catalog').html(content);
        }
    });

    $(function() {
        $( ".datepicker" ).datepicker({ dateFormat: "yy-mm-dd" }).val();
    });
</script>

的HTML
<form action="courses.php" method="POST">
    <b>Select the course</b>
    Academy<input id="academy_id" name="acad_id" placeholder="Academy ID" type="text" />
    Courses being offered?
    <select name="courses_offered">
        <option value="default">---Select---</option>
        <option value="1">1</option>
        <option value="2">2</option>
    </select>

    <div id="course_catalog"></div>
    Static input: <input type="text" id="last_contacted_date" name="last_contacted_date" class="datepicker" />
    <input value="SAVE" name="submit" type="submit">
</form>

最佳答案

您要做的是确保在创建内容并将其添加到DOM之后,datepicker代码运行。最简单的方法是在结尾处将datepicker代码移到showFields方法内。像这样:

function showFields(option) {

    . . . rest of method . . .

    $('#course_catalog').html(content);

    $('#course_catalog').find(".datepicker").datepicker({dateFormat: "yy-mm-dd"});
}
$('#course_catalog').find(".datepicker")部分将确保仅动态添加的datepicker字段将被初始化(您不想针对静态字段再次运行它)。

关于javascript - jQueryui Datepicker不显示日历,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20103782/

10-15 14:50