如何防止输入被禁用?
How to prevent an input from being disabled?
我有一个 ID 为 my-field 的输入字段 <input>
,某些插件在第一次转义后向其中添加了属性 disabled="disabled"
。
这是一个问题,所以我试图使用以下代码使禁用的属性远离它:
var input = document.getElementById("my-field");
document.addEventListener("change", input, function(){
setTimeout(function() {
input.disabled = false;
}, 50)
});
但是它不起作用,我做错了什么?
编辑: 如下所示,我将布尔值更正为没有“”,但它不起作用。
可以这样设置
Vanilla Javascript
// Enable
document.getElementById("my-field").disabled = false;
// Disable
document.getElementById("my-field").disabled = true;
JQuery
// Enable
$("#my-field").prop( "disabled", false );
// Disable
$("#my-field").prop( "disabled", true );
如果您只想删除属性,请使用 removeAttribute
函数,如下所示:
document.querySelector('#my-field').removeAttribute('disabled')
至于你的解决方案,我建议监听元素的变化,而不是猜测超时,像这样:
new MutationObserver(([{ attributeName, target }]) =>
attributeName === 'disabled' && target.removeAttribute('disabled')
).observe(document.querySelector('#my-field'), { attributes: true });
$("#my-field").removeAttr("disabled");
document.getElementById("my-field").removeAttribute("disabled")
使用jquery解决您的问题
启用:
$("#element").prop( "disabled", false );
对于禁用:
$("#element").prop( "disabled", true );
尝试重新定义 setAttribute 方法并在输入中禁用 属性,例如:
function removeDisabled(input) {
input.disabled = false;
input.removeAttribute('disabled');
Object.defineProperties(input, {
disabled: {
get: function() { return false; }
},
setAttribute: {
value: function() {}
}
})
}
removeDisabled(document.getElementById('my-field'))
我有一个 ID 为 my-field 的输入字段 <input>
,某些插件在第一次转义后向其中添加了属性 disabled="disabled"
。
这是一个问题,所以我试图使用以下代码使禁用的属性远离它:
var input = document.getElementById("my-field");
document.addEventListener("change", input, function(){
setTimeout(function() {
input.disabled = false;
}, 50)
});
但是它不起作用,我做错了什么?
编辑: 如下所示,我将布尔值更正为没有“”,但它不起作用。
可以这样设置
Vanilla Javascript
// Enable
document.getElementById("my-field").disabled = false;
// Disable
document.getElementById("my-field").disabled = true;
JQuery
// Enable
$("#my-field").prop( "disabled", false );
// Disable
$("#my-field").prop( "disabled", true );
如果您只想删除属性,请使用 removeAttribute
函数,如下所示:
document.querySelector('#my-field').removeAttribute('disabled')
至于你的解决方案,我建议监听元素的变化,而不是猜测超时,像这样:
new MutationObserver(([{ attributeName, target }]) =>
attributeName === 'disabled' && target.removeAttribute('disabled')
).observe(document.querySelector('#my-field'), { attributes: true });
$("#my-field").removeAttr("disabled"); document.getElementById("my-field").removeAttribute("disabled")
使用jquery解决您的问题
启用: $("#element").prop( "disabled", false );
对于禁用: $("#element").prop( "disabled", true );
尝试重新定义 setAttribute 方法并在输入中禁用 属性,例如:
function removeDisabled(input) {
input.disabled = false;
input.removeAttribute('disabled');
Object.defineProperties(input, {
disabled: {
get: function() { return false; }
},
setAttribute: {
value: function() {}
}
})
}
removeDisabled(document.getElementById('my-field'))