如何禁用使用JavaScript的HTMLbutton?

我读过,你可以禁用(使物理上不可点击)一个HTMLbutton,但附加“禁用”标签,但不作为属性,如下所示:

<input type="button" name=myButton value="disable" disabled> 

由于这个设置不是一个属性,我怎样才能通过JavaScriptdynamic添加这个来禁用以前启用的button?

由于这个设置不是一个属性

这是一个属性。

一些属性被定义为布尔值,这意味着你可以指定它们的值,并把所有的东西都保存下来。 即,而不是禁用=“ 禁用 ”,你只包括黑体部分。 在HTML 4中,只包含粗体部分,因为完整版本被标记为有限支持的function (尽pipe现在规范编写时不太正确)。

从HTML 5开始,规则已经改变,现在只包含名称而不包含值。 这没有实际的区别,因为名称和值是相同的。

DOM属性也被称为disabled ,是一个布尔值,其truefalse

 foo.disabled = true; 

理论上你也可以foo.setAttribute('disabled', 'disabled');foo.removeAttribute("disabled") ,但我不会相信这与旧版本的Internet Explorer(这是众所周知的错误,当涉及到setAttribute )。

禁用

 document.getElementById("btnPlaceOrder").disabled = true; 

启用

 document.getElementById("btnPlaceOrder").disabled = false; 

这是一个属性,但是是一个布尔值(所以它不需要名称,只是一个值 – 我知道,这很奇怪)。 你可以在Javascript中设置等价的属性:

 document.getElementsByName("myButton")[0].disabled = true; 

尝试以下操作:

 document.getElementById("id").setAttribute("disabled", "disabled"); 

如果你有button对象,调用b: b.disabled=false;

这仍然是一个属性。 将其设置为:

 <input type="button" name=myButton value="disable" disabled="disabled"> 

… 已validation。

我认为最好的办法可能是:

 $("#ctl00_ContentPlaceHolder1_btnPlaceOrder").attr('disabled', true); 

它很好的跨浏览器。

HTMLInputElement上设置disabled属性的官方方式是这样的:

 var input = document.querySelector('[name="myButton"]'); // Without querySelector API // var input = document.getElementsByName('myButton').item(0); // disable input.setAttribute('disabled', true); // enable input.removeAttribute('disabled'); 

虽然@ kaushar的答案足以启用和禁用一个HTMLInputElement ,并且由于IE的历史性错误setAttribute ,它可能更适合跨浏览器兼容性,但它仅适用于Element属性shadow Element属性。 如果设置了属性,那么DOM将默认使用该属性的值,而不是等价属性的值。

属性和属性之间有一个非常重要的区别。 一个真正的HTMLInputElement 属性的例子是input.value ,下面演示了shadowing是如何工作的:

 var input = document.querySelector('#test'); // the attribute works as expected console.log('old attribute:', input.getAttribute('value')); // the property is equal to the attribute when the property is not explicitly set console.log('old property:', input.value); // change the input's value property input.value = "My New Value"; // the attribute remains there because it still exists in the DOM markup console.log('new attribute:', input.getAttribute('value')); // but the property is equal to the set value due to the shadowing effect console.log('new property:', input.value); 
 <input id="test" type="text" value="Hello World" /> 
 <button disabled=true>text here</button> 

你仍然可以使用一个属性。 只需使用“禁用”属性而不是“值”。

不同的方式来做到这一点:

 function disableBtn() { document.getElementById("myBtn").disabled = true; } 

要么

  $(document).on("click", ".create-user", function (e) { $(".create-user").attr("disabled", true); }