jQuery - 无法禁用textarea

时间:2014-04-11 20:24:50

标签: jquery

简单的情况,但我不能让它工作。我有一个复选框和一个文本区域。我想要的是当用户选中复选框时,它启用文本区域,当用户取消选中该框时,我希望禁用文本区域。简单吧?我不知道我做错了什么......

HTML:

<!-- Checkbox -->
<input type="checkbox" name="placeInvoiceOnHold" id="id_placeInvoiceOnHold">

<!-- Textarea -->
<textarea id="id_invoiceHoldReason" rows="10" cols="40" name="invoiceHoldReason" class="text-field"></textarea>

页面底部的jQuery,在<script></script>块中:

function check_holds() {
  if ($("#id_placeInvoiceOnHold").is(":checked")) {
    $("#id_invoiceHoldReason").attr('disabled',true);
  }
  else {
    $("#id_invoiceHoldReason").removeAttr('disabled');
  }
}

我尝试添加一些代码来查看我的.click方法是否正在触发并实际处理正确的元素,而且确实如此。像这样:

function check_holds() {
  if ($("#id_placeInvoiceOnHold").is(":checked")) {
    $("#id_invoiceHoldReason").text("TESTING"); <!-- <<-- This line here as a a text  -->
    $("#id_invoiceHoldReason").attr('disabled',true);
  }
  else {
    $("#id_invoiceHoldReason").removeAttr('disabled');
  }
}

“TESTING”出现在文本区域,所以我知道我有正确的元素ID。但说真的,为什么它不起作用?!我看过Chrome控制台,没有弹出错误。

这是我尝试过的:

$("#id_invoiceHoldReason").prop('disabled','disabled');
$("#id_invoiceHoldReason").disabled = true;

似乎无效。我错过了什么?

3 个答案:

答案 0 :(得分:4)

使用:

$('#id_invoiceHoldReason').prop('disabled', true);

Live Demo

答案 1 :(得分:1)

$('#id_placeInvoiceOnHold').attr('disabled', 'disabled');

$('#id_placeInvoiceOnHold').prop('disabled', true);

答案 2 :(得分:1)

试试这个:

$(document).ready(function(){
  $("#id_invoiceHoldReason").attr("disabled","disabled"); 
});

工作小提琴:http://jsfiddle.net/robertrozas/txGvL/1/