Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML锚定标记是否应该尊重Disabled属性?_Html_Cross Browser_Internet Explorer 9 - Fatal编程技术网

HTML锚定标记是否应该尊重Disabled属性?

HTML锚定标记是否应该尊重Disabled属性?,html,cross-browser,internet-explorer-9,Html,Cross Browser,Internet Explorer 9,如果我创建一个HTML锚定标记并将disabled属性设置为true,那么在不同的浏览器中我会得到不同的行为!惊喜 我创建了一个示例来演示 在IE9中,链接变灰,不会传输到HREF位置。 在Chrome/FF/Safari中,链接是正常颜色,将转移到HREF位置 正确的行为应该是什么?IE9是否呈现错误,我应该实现一些CSS和javascript来修复它;还是Chrome/FF/Safari不正确,最终会迎头赶上 提前感谢。disabled是一个仅适用于每个输入元素的属性。IE可能会在上支持它,

如果我创建一个HTML锚定标记并将disabled属性设置为true,那么在不同的浏览器中我会得到不同的行为!惊喜

我创建了一个示例来演示

在IE9中,链接变灰,不会传输到HREF位置。 在Chrome/FF/Safari中,链接是正常颜色,将转移到HREF位置

正确的行为应该是什么?IE9是否呈现错误,我应该实现一些CSS和javascript来修复它;还是Chrome/FF/Safari不正确,最终会迎头赶上


提前感谢。

disabled是一个仅适用于每个输入元素的属性。IE可能会在上支持它,但如果您想符合标准,则需要使用CSS/JS。

IE在这种情况下似乎操作不正确

参见HTML5规范

禁用的IDL属性仅适用于样式表链接。当 link元素定义样式表链接,然后定义disabled属性 行为与为替代样式表DOM定义的行为相同。对于所有其他 链接元素它总是返回false,对设置不做任何操作

HTML4规范甚至没有提到禁用

编辑

我认为跨浏览器获得这种效果的唯一方法是js/css,如下所示:

#link{
    text-decoration:none;
    color: #ccc;
}
js


示例:

我必须在一个站点中修复此行为,该站点有许多锚,这些锚根据其他条件等使用此属性启用/禁用。可能不太理想,但在这样的情况下,如果您不希望单独修复每个锚的代码,这将对所有锚起作用:

$('a').each(function () {
    $(this).click(function (e) {
        if ($(this).attr('disabled')) {
            e.preventDefault();
            e.stopImmediatePropagation();
        }
    });
    var events = $._data ? $._data(this, 'events') : $(this).data('events');
    events.click.splice(0, 0, events.click.pop());
});
以及:


JQuery的答案对我来说不起作用,因为我的锚标记在表单上,而在表单上我使用asp字段验证器,它们只是玩得不好。这让我找到了一个非常简单的答案,不需要JQuery或CSS

<a id="btnSubmit" href="GoSomePlace">Display Text</a>
当然,您将执行一个循环来禁用DOM中的所有锚定标记,但我的示例演示了如何仅对一个特定元素执行此操作。您希望确保获得元素的正确客户id,但我不止一次这样做。这也适用于asp:LinkButtons,在浏览器中呈现时,这些按钮最终成为锚定标记元素


谢谢你的解释。您展示的JS与我为其他浏览器所做的类似。它也适用于IE,所以也许我会朝这个方向走。这个答案指的是规范中错误的部分:封面,而不是锚元素。这表明禁用并不是为任何一个指定的。哇。这太棒了,应该标记为答案!这怎么会有零票?!我已经开始实际修改当前答案,以执行您正在执行的操作,但最初没有阅读0投票答案!但是为什么css选择器不是[disabled=disabled],为什么不在jQuery中使用相同的选择器呢?它不应该被标记为答案,因为它不是答案。每当“disabled”属性在文档中的任何位置发生更改时,您都需要运行此代码。Jaroslav,您只需要为每个锚运行此代码一次。无论如何,我同意这不是本文中问题的答案。我只是认为它可能对其他人有用,[disabled=disabled]只会选择,它不会选择哪一种是写入禁用属性的有效方式,如果它在a元素上被允许的话
a[disabled] {
    color: gray;
    text-decoration: none;
}
<a id="btnSubmit" href="GoSomePlace">Display Text</a>
function DisableButton() {
    var submitButton = document.getElementById("btnSubmit");
    if (submitButton != null) {
        submitButton.setAttribute('disabled', 'disabled');
    }
}