通过应用自定义css类禁用html输入元素

时间:2012-08-08 11:25:45

标签: javascript jquery html css

我想通过应用我的自定义css类来禁用div的所有输入元素。 但我找不到任何可以禁用输入元素的css属性。 目前我在做什么

  $('#div_sercvice_detail :input').attr('disabled', true);
 $('#retention_interval_div :input').addClass("disabled"); 

可以用css attr禁用div的所有输入元素但是我想应用我的自定义类来禁用所有带有一些额外css属性的输入

 $('#retention_interval_div :input').addClass("disabled");

.disabled{
color : darkGray;
font-style: italic;
/*property for disable input element like*/
/*disabled:true; */
}    

使用jquery执行此操作的任何建议,而不使用.attr('disabled',true);?

6 个答案:

答案 0 :(得分:8)

无法仅使用CSS禁用元素,但您可以创建将应用于禁用元素的样式:

<style>
#retention_interval_div​​ input[type="text"]:disabled { 
    color : darkGray;
    font-style: italic;
}​
</style>

然后在你的代码中你只需说:

 $('#retention_interval_div :input').prop("disabled", true);

演示:http://jsfiddle.net/nnnnnn/DhgMq/

(当然,旧浏览器不支持:disabled CSS选择器。)

请注意,如果您使用的是jQuery版本&gt; = 1.6,则应使用.prop()代替.attr()来更改禁用状态。

您展示的代码不会禁用它应用类的相同元素 - 选择器是不同的。如果这只是一个拼写错误,那么你可以将它简化为一行:

$('#retention_interval_div :input').addClass("disabled").attr('disabled', true);

答案 1 :(得分:2)

您可以使用以下css实际禁用输入:

pointer-events: none;

答案 2 :(得分:1)

没有。 CSS无法禁用输入元素。 CSS仅用于样式,它不能做任何其他事情。此外,输入仅适用于输入,不要忘记选择,textarea,密码

答案 3 :(得分:1)

你需要做两件事,为什么不将它们包装在一个函数中呢?您甚至可以创建一个小插件来执行此操作:

(function ($) {
    $.fn.disableInput = function () {
        return this.each(function(){
            $(this).prop('disabled');
            $(this).addClass('disabled', true);            
        });

    }
})(jQuery);

然后你可以这样称呼它:

$('#myInput').disableInput();

...甚至用其他东西把它连在一起,比如:

$('#myInput').disableInput().addClass('otherClass');​

答案 4 :(得分:0)

您无法使用css属性禁用输入元素。但是你可以改进你当前的编码,如下面的

 $('#div_sercvice_detail :input').prop('disabled',true).addClass("disabled");

答案 5 :(得分:0)

使用普通CSS

.disabled{
    opacity: 0.6;
    cursor: not-allowed;
    pointer-events: none;
}