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 ,不应该有disabledreadonly的值。

如此合理

  

很好,也很正确。 没有价值。

不幸的是,没有办法用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了这一点。