禁用不适用于我的按钮

Posted

技术标签:

【中文标题】禁用不适用于我的按钮【英文标题】:Disable not working for my button 【发布时间】:2015-01-03 05:37:25 【问题描述】:

我一直在尝试制作自己的按钮,但由于某种原因,我似乎无法让 :disable 正常工作。我希望禁用该按钮(不响应单击和灰色文本)。我错过了什么?

http://jsfiddle.net/aj4n0ymd/

html

<!doctype html>
<div id="menu"> 
    <a class="button" disabled="true" id="button">Click</a>
</div>

CSS:

.button 
    display: block;
    width: 40%;
    text-align: center;
    float: left;
    color: #000000;
    font-size: 10px;
    padding: 0.5em 1em;
    text-decoration: none;
    -webkit-user-select: none; /* Chrome/Safari */
    -moz-user-select: none; /* Firefox */
    -ms-user-select: none; /* IE10+ */
/* Rules below not implemented in browsers yet */
    -o-user-select: none;
    user-select: none;

.button:hover 
    background: #f0f0f0;
    text-decoration: none;

.button:active 
    background: rgb(150, 150, 150);
    background-image: linear-gradient(to bottom, rgb(150, 150, 150), rgb(200, 200, 200));
    text-decoration: none;

.button:disabled 
    color:rgb(150, 150, 150);

此外,这将与 javascript 一起使用。这在js中是否足以改变禁用状态?

button = document.querySelector("#button");
button.disabled = true; 

【问题讨论】:

没有禁用属性... 【参考方案1】:

a 标签没有禁用属性。查看文档以了解可以具有的有效属性。只有inputsselecttextareas 可以具有禁用属性。

您可以删除 href 或添加返回 false 的点击处理程序。

$("#button").on("click", function() 
  alert("ok");
);
.button 
  display: block;
  width: 40%;
  text-align: center;
  float: left;
  color: #000000;
  font-size: 10px;
  padding: 0.5em 1em;
  text-decoration: none;
  -webkit-user-select: none;
  /* Chrome/Safari */
  -moz-user-select: none;
  /* Firefox */
  -ms-user-select: none;
  /* IE10+ */
  /* Rules below not implemented in browsers yet */
  -o-user-select: none;
  user-select: none;
  background: transparent;
  border: none;

.button:hover 
  background: #f0f0f0;
  text-decoration: none;

.button:active 
  background: rgb(150, 150, 150);
  background-image: linear-gradient(to bottom, rgb(150, 150, 150), rgb(200, 200, 200));
  text-decoration: none;

.button:disabled 
  color: rgb(150, 150, 150);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="menu" disabled="disabled">
  <input type="button" class="button" id="button" disabled="disabled" value="Click" />
</div>

参考文献

MDN &lt;a&gt; element

【讨论】:

最后我没有使用你的解决方案,但是你关于 标签没有 disabled 属性的评论让我寻找更多信息,最终我登陆了这个网站:davidwalsh.name/html5-buttonswhich我相信这是一个非常好的解释。使用按钮会导致 2 个问题:在悬停期间,它移动了其他元素。 (这里的解决方案***.com/questions/556153/…)默认情况下按钮有一个边框,但为此只需执行 button border:0; 即可。 希望你能看到这个MDN :)【参考方案2】:

在您的 HTML 中:

正确的方法是disabled="disabled" 而不是这个disabled="true",但这对&lt;a...&gt;&lt;/a&gt; 链接没有任何作用。

您可以添加onclick 事件来避免链接重定向:

<a class="button" onclick"return false;" id="button">Click</a>

然后在您的 CSS 中,只需将 color 属性替换为按钮的灰色即可:

.button 
  ...
  color: grey;
  ...

【讨论】:

【参考方案3】:

很简单,你的元素必须是一个按钮

<!doctype html>
<div id="menu"> 
    <button class="button" disabled="disabled" id="button">Click</button>

</div>

工作小提琴: http://jsfiddle.net/aj4n0ymd/3/

【讨论】:

【参考方案4】:

没有禁用属性... 如果您需要禁用 a 上的点击事件,您可以在点击事件上使用 JQuery 的 preventDefault():

$( "a" ).click(function( event ) 
    event.preventDefault();
);

根据event.preventDefault()

【讨论】:

【参考方案5】:

它应该是带有一点点javascript的按钮或锚标记。

http://jsfiddle.net/jasongennaro/QGWcn/ [Jsfiddle]

$('#link').click(function(e)
e.preventDefault();

);

【讨论】:

以上是关于禁用不适用于我的按钮的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Button 样式对象仅适用于按钮内的文本,而不适用于整个按钮?

禁用用户名和密码的chrome自动填充不适用于较新版本

按钮不适用于更新面板

禁用列排序不适用于多个 angularjs 数据表

如何禁用样式组件内material-ui按钮的悬停效果

按钮操作不适用于 subView