禁用文本框而不更改样式?

时间:2010-11-11 20:19:45

标签: jquery html css

如何在不让浏览器更改文本框的可视外观的情况下禁用HTML文本框?

我们使用JQuery禁用:$(".datepick").attr('readonly', 'readonly');

工作正常,但在Firefox中,文本框显示为灰色背景和粗边框。我们希望防止这种情况发生。

我们这样做的原因是将JQuery日期选择器文本框设置为只读(因此用户必须使用日历弹出区域)。

5 个答案:

答案 0 :(得分:6)

您可以通过模糊focus上的文字输入来实现:

$('.datepick').focus(function(){
    this.blur();
});

或者,您可以在输入中禁用文本输入:

$('.datepick').keydown(function(e){
    e.preventDefault();
});

答案 1 :(得分:3)

如果要覆盖已禁用输入框的样式,请显式设置输入文本框的样式,如下所示:

input[type=text] {
  color: #000;
  background-color: #fff;
}
/* alternatively you could add textarea to this as well */

另外,只要将输入设置为disabled并使用禁用的css样式,就可以设置类似'disabled'的css类:

input[type=text].disabled {
  /* disabled styling goes here */
}

然后有一些像这样的代码:

$(some_input).attr('disabled', 'disabled');
$(some_input).addClass('disabled');

并重新启用该字段,您可以尝试以下内容:

$(some_input).removeAttr('disabled');
$(some_input).removeClass('disabled');

答案 2 :(得分:0)

input元素的disabled属性会在不改变外观的情况下阻止焦点和输入。

答案 3 :(得分:0)

试试这个:

$(".ui-state-disabled").removeClass("ui-state-disabled");

我正在处理一些可拖动/可放置的元素,并希望在不改变其外观的情况下禁用该功能。

答案 4 :(得分:-1)

关于attr('disabled', true)的情况。重新启用,removeAttr('disabled')

http://jsfiddle.net/E9m3K/3/

^样式已停用,因为您要求停用

http://jsfiddle.net/E9m3K/4/

^只读样式,所以你可能只想覆盖/明确定义css中的borderbackground