我似乎无法使用这个基本的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 .
答案 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: {...}%>