重新点击输入字段时,jQuery Datepicker挂起(Chrome)
我有这个jsFiddle: http : //jsfiddle.net/VebTY/
看起来这只是chrome中的一个问题。
当您单击页面中的某个项目时,它会添加一个文本字段,然后会弹出日期选择器。 当您单击文本框然后返回文本框时,浏览器将挂起5-10秒。 为什么这样做,我该如何解决?
这是我的相关代码:
$(document).on("focus", "td input[type=text]", function(e) { e.stopPropagation(); if ($(this).closest("td").attr("data-type") === "date") { var dt = $(this).val(); $(this).not(".hasDatePicker").datepicker(); $(this).datepicker("setDate", dt); } }); $(".editable").click(function(e) { if (!$(e.target).is('input, textarea')) { $(".editable").each(function() { if ($(this).has("input")) { var v = $(this).children("input.input, textarea").attr("data-orig"); $(this).text(v); } }); var type = $(this).attr("data-type"); var val = $(this).text(); if (type === "text" || type === "date") { str = '
'; } else if (type === "textarea") { str = '
'; } str += ''; str += ''; $(this).html(str); $(this).find("input[type=text], textarea").focus(); } });
你在这里创建一个无限循环。
问题的原因在第7行:
$(this).datepicker("setDate", dt);
它创建了一个无限循环,您的焦点事件将被触发,直到一切崩溃
我会试着弄清楚如何解决这个问题,很快就会用小提琴进行更新
更新:
发现你的问题! 这是一个工作小提琴
这个问题是由这条线引起的:
$(this).not(".hasDatePicker").datepicker();
类名是hasDatepicker
而不是hasDatePicker
。 这是一个棘手的问题:D