【问题标题】:jquery clone date picker not workingjquery克隆日期选择器不起作用
【发布时间】:2015-09-17 18:36:17
【问题描述】:

使用日期选择器进行克隆。我在 stackoverflow 中搜索了我的问题,但没有得到正确的东西。当用户单击原始日期的日期时,它按预期工作但是一旦用户单击克隆 div 中的 addmore 按钮,日期选择器就无法工作。我尝试给.destroy 结果没有按预期出现。这可能是重复的问题,但正如我所说的解决方案不适用于我的情况。

这里是jquery代码。

var currentDate = new Date();
$(".cloned-row1").find(".deg_date").removeClass('hasDatepicker').datepicker({
    dateFormat: "mm-dd-yy",
    changeMonth: true,
    yearRange: "-100:+0",
    changeYear: true,
    maxDate: new Date(),
    showButtonPanel: false,
    beforeShow: function () {
        setTimeout(function (){
        $('.ui-datepicker').css('z-index', 99999999999999);

        }, 0);
    }
});
$(".deg_date").datepicker("setDate", currentDate);
var count=0;
    $(document).on("click", ".edu_add_button", function () { 
        alert("checj");
        var $clone = $('.cloned-row1:eq(0)').clone(true,true);
        //alert("Clone number" + clone);
        $clone.find('[id]').each(function(){this.id+='someotherpart'});
        $clone.find('.btn_more').after("<input type='button' class='btn_less1' id='buttonless'/>")
        $clone.attr('id', "added"+(++count));
        $clone.find(".school_Name").attr('disabled', true).val('');
        $clone.find(".degree_Description").attr('disabled', true).val('');
        $clone.find("input.deg_date").datepicker();
        $(this).parents('.educat_info').after($clone);
    });
    $(document).on('click', ".btn_less1", function (){
        var len = $('.cloned-row1').length;
        if(len>1){
            $(this).closest(".btn_less1").parent().parent().parent().remove();
        }
    });

这里是小提琴link

提前致谢

【问题讨论】:

标签: javascript jquery html datepicker


【解决方案1】:

Jquery datepicker 在初始化时为它绑定的输入字段创建基于 UUID 的 ID 属性。如果克隆例程管理这些元素,则克隆这些元素会产生更多具有相同 ID(jQuery 不喜欢)或不同 ID 的元素(这意味着 datepicker 不知道克隆)。

尝试像这样更新你的 js 代码

$clone.find("input.deg_date")
    .removeClass('hasDatepicker')
    .removeData('datepicker')
    .unbind()
    .datepicker({
        dateFormat: "mm-dd-yy",
        changeMonth: true,
        yearRange: "-100:+0",
        changeYear: true,
        maxDate: new Date(),
        showButtonPanel: false,
        beforeShow: function() {
            setTimeout(function() {
                $('.ui-datepicker').css('z-index', 99999999999999);

            }, 0);
        }
    });

这是更新后的JSFIDDLE。希望这会有所帮助。

【讨论】:

  • 我在同一行还有一个查询,我有一个日期选择器,您的代码不起作用,您能帮我解决一下吗
  • 您还必须删除 id .removeAttr('id') jsfiddle.net/kawadkarbk31/bepzbqpo/17
【解决方案2】:

你可以重新启动日期选择器,

将日期选择器行放在点击事件的最后

$(document).on("click", ".edu_add_button", function () { 
  ...
  ...
  ...
  ...
  $(".deg_date").datepicker("setDate", currentDate);
});

它会起作用的!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多