如何使用jQuery禁用文本区域?

时间:2014-05-20 19:09:27

标签: jquery ruby-on-rails

我似乎无法使用这个基本的jQuery脚本。我以为自己可以做到,但显然我对此事情并不了解。我正在使用Rails 4.

创建新报告时,我希望能够在加载文档时禁用报告正文。从长远来看,我想禁用报表正文,直到填写前两个字段表单。我认为jQuery根本没有通过。我尝试了一个基本的.hide()功能,但它没有用。我有jQuery在我的应用程序的其他部分工作。谢谢你的时间!

new.js.erb

$(document).ready(function () {
  $("#report_body").prop('disabled', true);
});

_form.html.erb

<%= simple_form_for(@report, remote: true) do |f| %>
    ... snippet ...
    <div class="col-lg-12">
        <%= f.input :body, input_html: { rows: 20, style: 'width: 100%;', id: 'report_body' }%>
    </div>
    ... snippet ... 
<% end %>

报告控制器

  # GET /reports/new
   def new
    @report = Report.new
    # I tried doing a respond to block here for format.js but I think thats only for AJAX callbacks?
   end

的application.js

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require_tree .

1 个答案:

答案 0 :(得分:0)

您应该做的第一件事是检查JQuery是否可以找到您的DOM元素。

尝试通过控制台进行调试,以查看是否可以使用您提供的条件找到该元素。这在尝试隔离DOM元素时总是有用。

console.debug($("#report_body").contents());

我不确定你提供的代码片段之外是否还有其他具有相同ID的元素,但如果你这样做,那么最好将report_body改为类名。

假设所有这些都在检查中,您可能需要尝试以下操作:

$('input#report_body').attr('disabled', true);

如果有多个文本区域实例共享相同的类名,

    $(this).find('input.report_body').each(function () {
        $(this).attr('disabled', true);
    });

或者,您也可以使用以下命令禁用Ruby中的字段:

 <%= f.input :body, :disabled => true, input_html: {...}%>