如何禁用文本区域?

10

如何禁用动态添加到HTML中的文本区域?

HTML:

<div class="ss_datesel_inp_cont">
    <div class="ss_datesel_inp_right_corner">
    </div>
    <input autocomplete="off">
</div>

这是我尝试过的:

   $('.ss_datesel_inp_cont:textarea').prop("disabled", true);
   $('.ss_datesel_inp_cont:input').prop("disabled", true);

1
你使用的是哪个版本的jQuery? - aziz punjani
5个回答

35

根据你所发布的代码,我没有看到textarea元素?基于你拥有的标记,你可以通过以下方式禁用输入:

$('.ss_datesel_inp_cont input').prop('disabled', true);
你的代码不能工作,仅仅是因为选择器错误了。输入框是 .ss_datesel_inp_cont 的子元素,因此你需要在 .ss_datesel_inp_continput 之间加上一个空格来表示它们的关系。输入框也是一个直接的子元素,所以你可以使用直接子代符号 >,例如$('.ss_datesel_inp_cont > input')

10

改变禁用属性应该使用.prop()函数。

$("textarea").prop('disabled', true);
$("textarea").prop('disabled', false);

注意:适用于 jQuery 1.6+

这个方法是可行的,但如果用户知道ID选择器,那么使用jQuery操作不是最快的方式吗?例如:$("#mytextareaID").prop('disabled', true); - Tom Stickel
@TomStickel 我以一般的方式添加了代码。如果您知道元素ID,使用它会更合适和更安全。我认为在任何情况下性能都不是太大的问题。 - Foreever

0

你试过了吗?

$('.ss_datesel_inp_cont:textarea').attr("disabled", true);

prop 只适用于 jQuery 1.6 或更高版本。


我正在尝试添加一个类以查看其是否有效,但我甚至不能做到这一点。 - jQuerybeast
可能是因为jQuery没有初始化,你是否查看了控制台以查看是否有任何错误? - aziz punjani

0
我会尝试:
$('.ss_datesel_inp_cont:textarea').prop("disabled", "disabled");

或者

$('.ss_datesel_inp_cont textarea').prop("disabled", "disabled");

0
你可以这样做: $('.ss_datesel_inp_cont input').attr('disabled','disabled');
你的input位于div中,所以你可以用与css选择器相同的方式选择它,通过空格。
它是div的子元素,所以你也可以这样做:
.ss_datesel_inp_cont > input
示例:http://jsfiddle.net/UpHsA/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接