我正在开发Rails应用程序。在index.html.haml上,我还渲染了_form.html.haml(用于新建和编辑操作。)索引页面上有一个链接“添加组”,单击该链接时应禁用表单中的某些字段。我已经为它编写了jquery代码。我的问题是,当我点击链接时,字段被禁用(变灰)但立即再次启用。如果我刷新页面,那么我会看到禁用的字段。当我点击链接然后保持禁用状态时,我希望它发生。
jQuery代码
$(function(){
$("#add_requirement_group").click(function() {
$("#requirement_text_full, #requirement_requirement_type").prop("disabled", true);
});
});
新建和修改操作的表单。
= form_for ([@requirement.requirements_template, @requirement]), html: { class: "form-horizontal" } do |f|
- if @requirement.errors.any?
#error_explanation
%h2= "#{pluralize(@requirement.errors.count, "error")} prohibited this requirement from being saved:"
%ul
- @requirement.errors.full_messages.each do |msg|
%li= msg %fieldset
.control-group
= f.hidden_field :parent_id
.control-group
= f.label :text_brief, class: "control-label"
.controls
= f.text_field(:text_brief, class: "input-block-level")
.control-group
= f.label :text_full, class: "control-label"
.controls
= f.text_area(:text_full, rows: 5, class: "input-block-level")
.control-group
= f.label :obligation, class: "control-label"
.control-group
= f.label :requirement_type, class: "control-label"
.controls
= f.select :requirement_type, options_for_select([:text, :numeric, :date, :enum]), include_blank: true
.actions.pull-right
%br/
= f.submit 'Save', class: 'btn btn-info'
= button_to 'Finish', '#', class: 'btn btn-info', method: :get
index.html.haml
%hr
.row-fluid
.span4
%fieldset.template_outline
%strong Template Outline
%br
= link_to 'Add Group', new_requirements_template_requirement_path(@requirements_template), id: "add_requirement_group"
%hr
= render 'form'
我知道这是一段简单的代码,但由于某些原因,禁用功能没有按预期工作。
答案 0 :(得分:0)
行。单击“添加组”链接时,将触发单击事件处理程序,这将禁用HTML控件,如预期的那样。但是,它会继续并重定向到“new_requirements_tempate_reqquirement_path”,我认为你不希望这样做。为了抑制DOM元素的默认操作,您可能需要使用“preventDefault()。
$(function(){
$("#add_requirement_group").click(function(e) {
e.preventDefault();
$("#requirement_text_full, #requirement_requirement_type").prop("disabled", true);
});
});
您描述的行为告诉我您使用的是Turbo-Links,它是Rails 4的标准配置。