remove - jquery set attribute




jquery禁用输入与attr() (4)

当我尝试使用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的价值。

所以合成

<select disabled></select>

是正确的和正确的。 没有必要的价值。

不幸的是,没有办法用JavaScript创建这样的构造(如果你不想覆盖html),所以你不得不增加一些价值。 既然这两个属性都是布尔型的,你可以添加任何东西。 .attr('disabled', 'foobar').attr('disabled', true)一样好。


尝试使用 -

$('#target').attr("disabled", true);
$('#target').attr("readonly", true);

.attr('disabled', 'disabled'); 做得很好。

W3C规范说,你必须设置没有值的属性。 但是,这是一个jQuery的attr()函数的问题。 您无法设置没有值的属性。

它在DOM中写入disabled="" 。 但它工作得很好。

看到这里: http : //www.w3schools.com/tags/att_input_disabled.asp


.attr('disabled', true/false); readonly是最快的方法。 但是,请记住,如果一个元素“禁用”,它将不会出现在表单提交数据中,而readonly将出现在发布数据中。 这是开发人员想要禁用输入的常见错误,但后来又想知道为什么他们没有在PHP中获得他们的$_POST数据。

只是一个小头!







attributes