gpt4 book ai didi

javascript - 重新单击输入字段时 jQuery Datepicker 挂起(Chrome)

转载 作者:行者123 更新时间:2023-12-02 18:35:42 25 4
gpt4 key购买 nike

我有这个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 = '<input type="text" data-orig="' + val + '" onfocus="this.value = this.value;" class="input" style="width: 100%;" value="' + val + '" /><br />';
} else if (type === "textarea") {
str = '<textarea class="input" data-orig="' + val + '" onfocus="this.value = this.value;" style="width: 100%;">' + val + '</textarea><br />';
}
str += '<input type="button" class="save-edit" value="Save" />';
str += '<input type="button" class="cancel-edit" value="Cancel" />';

$(this).html(str);
$(this).find("input[type=text], textarea").focus();
}
});

最佳答案

您正在此处创建无限循环。

问题的原因在第 7 行:

$(this).datepicker("setDate", dt);

它会创建一个无限循环,在该循环中触发焦点事件,直到一切崩溃

我会尝试找出如何解决这个问题,很快就会用 fiddle 更新

更新:

发现你的问题了!这是 working fiddle

问题是由这一行引起的:

$(this).not(".hasDatePicker").datepicker();

类名是hasDatePicker而不是hasDatePicker。这是一个棘手的问题:D

关于javascript - 重新单击输入字段时 jQuery Datepicker 挂起(Chrome),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17352695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com