0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

prop(‘disabled’, false)を使ってもdisabled属性が消えない問題

Last updated at Posted at 2019-12-10

やりたいこと

jQueryで、

e.preventDefault();

を使った後にsubmitボタンにdisabled属性が付いてしまうので、これを

prop('disabled', false)

を使って削除したい。

上手くいかないコード

$(document).on('turbolinks:load', function(){
  $('#new_item').on('submit', function(e){
    var child_category = $("#child_category").val();
    var grandchild_category = $("#grandchild_category").val();
    if(child_category == "---" || grandchild_category == "---"){
      e.preventDefault();
      alert('カテゴリを選択してください');
      $('input[name="commit"]').prop('disabled', false);
    }
  })
})

実行結果は以下の通りで、なぜかdisabledが消えてくれません。
Image from Gyazo

※他にもattrを使ったりremoveAttrを使ったり、いろいろ試してみましたが、何をやっても上手くいきませんでした。
※console.logで確認したところ、propメソッドが効いていないわけではないようでした。disabled属性はfalseになっているにも関わらず、disabledが残ってしまうという現象が起きます。

上手くいったコード

$(document).on('turbolinks:load', function(){
  $('#new_item').on('submit', function(e){
    var child_category = $("#child_category").val();
    var grandchild_category = $("#grandchild_category").val();
    if(child_category == "---" || grandchild_category == "---"){
      e.preventDefault();
      $.ajax({
      }).done(function(){
        alert('カテゴリを選択してください');
        $('input[name="commit"]').prop('disabled', false);
      }).fail(function(){
        alert('ajax失敗');
      })
    }
  })
})

実行結果は以下の通りで、disabledが消えてくれるようになりました。
Image from Gyazo

ajaxをはさむことによってなぜか正常に作動しました。
理由はよくわかっておりませんが、とりあえずこれで動くようになりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?