jquery-ui - Jquery UI 按钮在刷新时被禁用

标签 jquery-ui jquery-ui-button

几周前我在 jquery 论坛上询问过这个问题,但没有成功,所以我会在这里再试一次:)

我为我正在从事的项目制作了一个简单的小部件,但遇到了一个奇怪的问题。

通过示例实现来解释它是最简单的。 http://decko.dk/buttontest

页面上有3个按钮。第一个是我的下拉小部件。下一个是常规禁用按钮 (A),最后一个是常规启用按钮 (B)。 如果您随后刷新页面(按 F5 或其他方式),则启用的按钮现在会神秘地禁用。 我不知道为什么会发生这种情况,但是如果按钮 A 一开始就没有被禁用,则刷新时按钮 B 将不会被禁用。另外,如果我在小部件代码中删除对 insertAfter 的调用,则该按钮将不会被禁用。 谁能解释为什么会出现这种奇怪的行为?

顺便说一句,我只能在 Firefox 中重现这一点。

最佳答案

我相信这是 Firefox 记住表单字段/控件值和状态的一个错误:

  1. 第一页加载后,有三个 <button>文档中的元素,以及 <button id="button_a">被禁用。 (当启用或禁用 jQuery UI 样式按钮时,它会将底层元素设置为相同的状态。)
  2. Firefox 记得第二个 <button>已禁用。
  3. 页面刷新后,在运行任何脚本之前,Firefox 会恢复表单字段和控件。它禁用第二个 <button> ,但由于没有运行任何脚本,第二个按钮是 <button id="button_b"> .
  4. 当 jQuery UI 创建 <button id="button_b"> 的样式按钮时,它发现它已被禁用,并继续将其样式设置为禁用。

这里有两个问题:

  1. Firefox 如何记住哪些元素被禁用。它没有考虑动态元素。我建议filing a bug with Mozilla为此。
  2. 页面刷新后,表单元素保持禁用状态。我不确定这是否是正确的行为,但有两个 bugzilla reports关于这一点。

测试用例可以简化为仅添加 <button>动态元素并禁用 <button id="button_a"> ,不需要 jQuery/jQuery UI:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>disabled button test</title>
    <script type="text/javascript">
    window.onload = function () {
        var a = document.getElementById('button_a'),
            menu = document.createElement('button');
        menu.appendChild(document.createTextNode('Menu'));
        document.body.insertBefore(menu, a);
        a.disabled = true;
    };
    </script>
</head>
<body>
    <button id="button_a">A</button>
    <button id="button_b">B</button>
</body>
</html>

关于jquery-ui - Jquery UI 按钮在刷新时被禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2719044/

相关文章:

jquery - 确认框不起作用 jquery ui

Javascript - 拖动后如何获得矩形,圆形坐标?

jQuery UI - 更改按钮颜色

jquery-ui - 在 jquery.load() 之后保留 jquery-ui 元素类

jQuery UI 不会将主题应用到按钮

jquery - 如何显示 jqueryui 按钮的禁用状态?

javascript - 滑动包装器可阻止页面上的所有点击事件

javascript - 检索 jquery-ui 对话框的 div

javascript - jQuery向上遍历并找到

jquery - 为什么我的 jQuery UI 按钮恢复为超大和通用?