【发布时间】:2014-07-16 12:06:23
【问题描述】:
我将我的应用程序移动到最新的 jQueryUI 版本,现在行为发生了变化。也就是说,当打开对话框时,会在具有焦点的元素上调用 blur 事件。当对话框关闭时,再次调用该元素的焦点事件。以前的 jQuery 版本没有调用这些事件。
问题是我在焦点事件中打开对话框,关闭它因此再次调用焦点并发生无限循环。
如何防止这种无限循环?
编辑:
我无法在一个简单的 jsfiddle 中把它弄好 最好的是这个
<div id="dialog" title="Select Value">
<select id="select" name="select">
<option value="1">Test</option>
</select>
</div>
<input type="text" name="test" id="test" value="" />
$(document).ready(function () {
$("#dialog").dialog({
autoOpen: false,
height: 120,
width: 185,
position: [285, 200],
modal: true,
buttons: {
"Ok": function () {
$(this).dialog("close")
}
}
});
$("#test").focus(function (event) {
$("#dialog").dialog("open");
});
});
这里没有无限循环,但您可以在关闭对话框后看到页面(结果)被破坏,因为一切都“模糊”了。
旧的行为也更像这样:
这里的背景仍然“模糊”,但您可以专注于新版本无法实现的输入。
【问题讨论】:
标签: jquery jquery-ui jquery-ui-dialog