2017-06-26 11 views
-1

私はそこに3つの機能を作成します。私はそれを短くするか、あるいは一つの機能に結合することを考えています。出来ますか?
ここに私のコードです!これらの機能を短くすることは可能ですか

$(function(){ 
    $(".js-disable-form").on("submit", function() { 
     $('#loading-modal').modal('show'); 
     $(this).find("input[type=submit]").prop('disabled', true); 
    }) 

    $(".js-disable-form-approval").on("submit", function() { 
     var res = confirm("入力内容で承認します。よろしいですか?"); 
     if (res == true) { 
      $('#loading-modal').modal('show'); 
      $(this).find("input[type=submit]").prop('disabled', true); 
     } else { 
      return false; 
     } 
    }) 

    $(".js-disable-form-individual").on("submit", function() { 
     $(this).find("input[type=submit]").prop('disabled', true); 
    }) 

    $('.js-disable-btn').on("click", function() { 
     $('#loading-modal').modal('show'); 
    }) 
}); 
+1

あなたの機能は何かを説明する必要がありますか? – Mark

+1

コードを貼り付けるのではなく、コードの内容、試したこと、期待される結果を説明します。 – Mistalis

+0

私はフォームを送信するときにモーダルをトリガーしたいし、送信ボタンも無効にします。差異の状況に応じて、2つのイベントが発生します。だから私はそこに3つの機能をmafeする – JiaPing

答えて

0

これはそれを行う必要があります:

function showModal() { $('#loading-modal').modal('show'); } 

function disableSubmit() { $(".js-disable-form input[type=submit]").prop('disabled', true); } 

$(function() { 
    $(".js-disable-form").on("submit", function() { 
    showModal(); 
    disableSubmit(); 
    }); 

    $(".js-disable-form-approval").on("submit", function() { 
    if (confirm("入力内容で承認します。よろしいですか?")) { 
     showModal(); 
     disableSubmit(); 
    } else return false; 
    }); 

    $(".js-disable-form-individual").on("submit", disableSubmit); 
    $('.js-disable-btn').on("click", showModal); 
}); 

これは元のコードよりもはるかに短いではなくはずですが、少なくとも1つの機能にすべてのイベントハンドラを置くことができ

$(function(){ 
    $(".js-disable-form").on("submit", function() { 
    $('#loading-modal').modal('show'); 
    $(this).find("input[type=submit]").prop('disabled', true); 
    }) 
}); 

$(function(){ 
    $(".js-disable-form-approval").on("submit", function() { 
    var res = confirm("入力内容で承認します。よろしいですか?"); 
    if (res == true) { 
     $('#loading-modal').modal('show'); 
     $(this).find("input[type=submit]").prop('disabled', true); 
    } else { 
    return false; 
     } 
    }) 
}); 

$(function(){ 
    $(".js-disable-form-individual").on("submit", function() { 
    $(this).find("input[type=submit]").prop('disabled', true); 
    }) 
    $('.js-disable-btn').on("click", function() { 
    $('#loading-modal').modal('show'); 
    }) 
}); 
+0

ありがとう!今はもっときれいに見えます。 – JiaPing

0

一般的に重複するコードを避ける方法を示します。付属のHTMLコードがありませんので、

+0

私はあなたに同意します。少なくとも、すべてのイベントハンドラを1つの関数に入れてください! – JiaPing

0
$('[class^=".js-disable-"').on("submit", function(){ 
    if ($(this).className.indexOf("individual") >= 0 || $(this).className.indexOf("form") >=0){ 
     $(this).find("input[type=submit]").prop('disabled', true); 
     if ($(this).className.indexOf("individual") >= 0){  
      $('.js-disable-btn').on("click", function() { 
       $('#loading-modal').modal('show'); 
      }) 
     } 
     else{ 
      $('#loading-modal').modal('show'); 
     } 
    } 
    else { 
     var res = confirm("入力内容で承認します。よろしいですか?"); 
     if (res == true) { 
      $('#loading-modal').modal('show'); 
      $(this).find("input[type=submit]").prop('disabled', true); 
     } 
     else { 
      return false; 
     } 
    } 
}); 

はテストしていません。基本的には、.js-disable-で始まるクラスと一致し、submitイベントを付加します。次に、あなたの機能を並べ替えるだけです。

+0

あなたのコードは美しいです。しかし、今は私のレベルに合っていません。 – JiaPing

関連する問題