2017-10-18 2 views
-1

J'essaie d'ajouter et de supprimer des attributs désactivés aux champs de saisie mais je n'ai pas de chance avec la méthode .prop().en utilisant jQuery dans les champs de saisie Ruby, en utilisant la méthode .prop() pour ajouter disbaled

ici est le html/Ruby on Rails

`

<div class="input-group"> 
     <span class="input-group-addon"> 
      <input id="scheduled-checkbox" type="checkbox"></input> 
      <!-- checked="<%= !f.object.published_on.nil? %>" disabled="<%= f.object.published? %>" --> 
     </span> 
     <input disabled="" id="scheduled-date" class="form-control" type="date" value="<%= f.object.published_on %>"></input> 
    <%= f.input :published_on, as: :hidden, input_html: { value: f.object.published_on } %> 
    </div> 
</div> 
</div> 
<div class="form-group"> 
    <% if f.object.persisted? %> 
    <%= f.submit I18n.t("rag.update"), name: :submit, value: :update, class: "btn_default_1 add_margin_top form-control" %> 
    <%= f.submit I18n.t("rag.publish_now"), name: :submit, value: :publish, class: "btn_default_1 add_margin_top form-control" %> 
    <% else %> 
    <%= f.submit I18n.t("rag.draft"), name: :submit, value: :draft, class: "btn_default_1 add_margin_top form-control submit", id: :draft %> 
    <%= f.submit I18n.t("rag.publish"), name: :submit, value: :publish, class: "btn_default_1 add_margin_top form-control submit", id: :publish %> 
    <%= f.submit I18n.t("rag.schedule"), name: :submit, value: :schedule, class: "btn_default_1 add_margin_top form-control submit", id: :schedule %> 
    <% end %> 
</div> 

ici est la JS

`$("#scheduled-checkbox").change(function() { 

    if ($("#scheduled-checkbox").is(':checked')) { 
     console.log('box is checked'); //checked means PUBLISH submit button is disabled 
     $("#scheduled-date").prop("disbaled:", true); 
     $("#schedule").prop("disbaled:", false); 
     $("#publish").prop("disbaled:", true); 

    } else { 
     console.log('box is unchecked'); //unchecked means SCHEDULE submit button is disbaled 
     $("#scheduled-date").removeAttr('disabled', false); 
     $("#schedule").removeAttr("disbaled:"); 
     $("#publish").removeAttr("disbaled:"); 

     console.log($("#scheduled-date").removeAttr('disabled')); 
    }` 
+0

essayez 'attr' au lieu de' prop' avec 'attr (" disabled "," disabled ")' lorsque vous voulez ajouter 'disabled' – uzaif

Répondre

0

Il devrait y avoir

$("#scheduled-date").prop("disabled", true); 

Au lieu de

$("#scheduled-date").prop("disbaled:", true); 

Et de même pour les deux lignes suivantes

0

oeil à votre code. vous avez défini 'disbaled' au lieu de 'disabled'. donc vous pouvez utiliser la méthode .attr() pour définir un attribut avec jquery, comme:

$("#publish").attr("disabled", "disabled"); or $("#publish").attr("disabled", false);.

attr handicapés ne permet pas de prendre la valeur d'entrée pour envoyer dans la méthode POST, donc vous devez définir l'attribut « readonly », comme ceci:

$("#publish").attr("readonly", "readonly"); ou $("#publish").attr("readonly", false);

ou utilisez .removeAttr () pour supprimer les attributs