如何禁用使用JavaScript的HTMLbutton?
我读过,你可以禁用(使物理上不可点击)一个HTMLbutton,但附加“禁用”标签,但不作为属性,如下所示:
<input type="button" name=myButton value="disable" disabled>
由于这个设置不是一个属性,我怎样才能通过JavaScriptdynamic添加这个来禁用以前启用的button?
由于这个设置不是一个属性
这是一个属性。
一些属性被定义为布尔值,这意味着你可以指定它们的值,并把所有的东西都保存下来。 即,而不是禁用=“ 禁用 ”,你只包括黑体部分。 在HTML 4中,只应包含粗体部分,因为完整版本被标记为有限支持的function (尽pipe现在规范编写时不太正确)。
从HTML 5开始,规则已经改变,现在只包含名称而不包含值。 这没有实际的区别,因为名称和值是相同的。
DOM属性也被称为disabled
,是一个布尔值,其true
或false
。
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); }