2013-10-07 179 views
0

我正在使用Rails應用程序。在index.html.haml上,我還渲染了_form.html.haml(用於新增和編輯操作)。索引頁面上有一個「添加組」鏈接,點擊時應禁用表單中的某些字段。我已經爲它寫了jquery代碼。我的問題是,當我點擊鏈接時,這些字段被禁用(變灰),但立即再次啓用。如果我刷新頁面,則會看到禁用的字段。當我點擊鏈接並保持禁用時,我希望它發生。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

好的。當點擊「添加組」鏈接時,點擊事件處理程序將觸發,這將按照您的預期禁用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-鏈接,船舶on Rails的4

標準
+0

嗨,它的工作!謝謝你這麼多,但一個簡短的問題。當你說「爲了抑制DOM元素的默認行爲」在這種情況下,你是什麼意思? – bhvd

+0

沒關係弄清楚你的意思。再次感謝您。 – bhvd

+0

沒問題,如果您能將我的標記爲答案,我將不勝感激。謝謝。:) –