Dec*_*cko 10 jquery-ui jquery-ui-button
几周前我在jquery论坛上问了这个没有运气,所以我会在这里再试一次:)
我为我正在研究的项目制作了一个简单的小部件,但我遇到了一个奇怪的问题.
用示例实现来解释它是最容易的. http://decko.dk/buttontest
在页面上有3个按钮.第一个是我的下拉小部件.下一个是常规禁用按钮(A),最后一个是常规启用按钮(B).如果您然后刷新页面(按F5或其他),启用按钮现在神秘地被禁用.我不知道为什么会发生这种情况,但如果按钮A没有被禁用,则刷新时不会禁用按钮B. 此外,如果我在我的小部件代码中删除对insertAfter的调用,则不会禁用该按钮.任何人都可以阐明为什么会出现这种奇怪的行为?
顺便说一句,我只能在Firefox中重现这一点.
Jef*_* To 12
我相信这是Firefox记住表单字段/控件值和状态的错误:
<button>文档中有三个元素,并被<button id="button_a">禁用.(当启用或禁用jQuery UI样式按钮时,它会将基础元素设置为相同的状态.)<button>被禁用.<button>,但由于没有运行脚本,第二个按钮是<button id="button_b">.<button id="button_b">,它会看到它被禁用并继续将其设置为禁用样式.这里有两个问题:
测试用例可简化为仅<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>
Run Code Online (Sandbox Code Playgroud)
我也遇到了这个问题,并发现它归结为 Firefox 中的愚蠢行为,我的解决方法是这样的:
前:
//set up the buttons
$("button").button();
Run Code Online (Sandbox Code Playgroud)
后:
//set up the buttons (and make sure firefox behaves)
$("button").button().attr("autocomplete", "off");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5367 次 |
| 最近记录: |