显然,一个被禁用的<input>没有被任何事件处理
有没有办法解决这个问题?
<input type="text" disabled="disabled" name="test" value="test" />
$(':input').click(function () {
$(this).removeAttr('disabled');
})
在这里,我需要单击输入来启用它。但是如果我不激活它,输入就不会被发布。
显然,一个被禁用的<input>没有被任何事件处理
有没有办法解决这个问题?
<input type="text" disabled="disabled" name="test" value="test" />
$(':input').click(function () {
$(this).removeAttr('disabled');
})
在这里,我需要单击输入来启用它。但是如果我不激活它,输入就不会被发布。
当前回答
这里的建议看起来也很适合回答这个问题
在禁用元素上执行单击事件?Javascript jQuery
jQuery('input#submit').click(function(e) {
if ( something ) {
return false;
}
});
其他回答
我做了和Andy E非常相似的事情;只是我用了一个环绕标签。然而,我需要“名称”,所以我把它改成了一个没有“href”的标签。
$(函数(){ $(“输入:禁用”).closest (" div ") .click(函数(){ (美元);(输入:禁用)。attr(“禁用”,假).focus (); }); }); < script src = " https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js " > < /脚本> < div > <input type="text" disabled /> < / div >
我找到了另一个解决方案:
<input type="text" class="disabled" name="test" value="test" />
类"disabled"通过不透明度模仿禁用元素:
<style type="text/css">
input.disabled {
opacity: 0.5;
}
</style>
如果元素被禁用,则取消事件并删除类:
$(document).on('click','input.disabled',function(event) {
event.preventDefault();
$(this).removeClass('disabled');
});
您可以考虑使用readonly而不是disabled。使用一些额外的CSS,您可以对输入设置样式,使其看起来像一个禁用字段。
实际上还有另一个问题。事件更改仅在元素失去焦点时触发,考虑到禁用字段,这不是逻辑。可能您正在将数据从另一个调用推入该字段。要做到这一点,你可以使用事件'bind'。
$('form').bind('change', 'input', function () {
console.log('Do your thing.');
});
这里的建议看起来也很适合回答这个问题
在禁用元素上执行单击事件?Javascript jQuery
jQuery('input#submit').click(function(e) {
if ( something ) {
return false;
}
});