Jquery使用attr()禁用输入
当我尝试使用attr()禁用或只读取输入字段时,我有一个有线行为。
removeAttr('disabled')
工作正常。
attr('name', 'somthing')
正在运作
attr('id', 'something else')
正在发挥作用
attr('disabled','disabled')
不工作 – >它只在DOM中写入disabled =“”并且它不会禁用输入字段
attr('readonly','readonly')
不工作 – >它只在DOM中写入readonly =“”,但仍然可以编辑输入字段。
$(document).ready(function() { $("input[name='rdio']").live('click', function() { $(".radio_select").find("input[name='rdio']").each(function(){ if(this.checked) { $("#"+this.value).removeAttr('disabled'); } else { $("#"+this.value).attr('disabled','disabled'); } }); }); });
有没有人经历过这种行为? 顺便说一下,我正在使用jquery 1.4.2
编辑:对不起,这是我尝试过的东西,忘了把它放回去。 所以使用attr()问题仍然存在。
在您遇到这种行为的浏览器中,这将非常有趣。 更有趣的是要知道,如果不是工作方式,元素不会被禁用,或者属性只是将disabled
值作为值。
由于W3C
,不应该有disabled
或readonly
的值。
如此合理
很好,也很正确。 没有价值。
不幸的是,没有办法用javascript创建这样的构造(如果你不想覆盖html),所以你不得不添加一些值。 由于两个属性都是布尔值,因此您可以添加任何内容。 .attr('disabled', 'foobar')
与.attr('disabled', true)
一样好。
尝试使用 –
$('#target').attr("disabled", true); $('#target').attr("readonly", true);
我认为应该是这样的
attr('disabled', true);
和readonly相同
.attr('disabled', 'disabled');
做得很好。
W3C规范说你必须设置没有值的属性。 但那是一个jquery attr()函数问题。 如果没有值,则无法设置属性。
它在DOM中写入disabled=""
。 但它工作得很好。
请参见此处: http : //www.w3schools.com/tags/att_input_disabled.asp
做.attr('disabled', true/false);
和readonly
是最快捷的方法。 但是,请记住,如果元素被“禁用”,它将不会出现在表单提交数据中,而readonly
将出现在post数据中。 对于开发人员来说,这是一个常见的陷阱,他们希望禁用输入,但后来想知道他们为什么不在PHP中获取$_POST
数据。
只是一点点抬头!
@OP:我怀疑该按钮在function上被禁用但在视觉上没有被禁用。
我经历了完全相同的症状。 使用attr(’disabled’,’disabled’)在DOM中产生disabled =“”。 该按钮实际上已被禁用,因为它不再生成点击事件,也不提交表单。 然而它仍然被强调,好像它是。
原因是按钮的CSS,它包含伪选择器’:active’。 即使按钮被禁用,也会应用此function。 将’:not([DISABLED])’添加到活动状态会删除误导性突出显示。
对于任何Drupal用户,Seven主题都有这个CSS,Seven是默认的管理主题。
我在FF和Chrome中validation了这一点。