2015-02-08 45 views
0

我有以下代碼:如何爲表單添加選擇提交,只有在特定的按鈕類型引起表單提交

$(document).ready(function() { 
    $('body').on("submit", "form", function() { 

     $(this).find('.btn-primary').prop("disabled", "disabled"); 
     $('#progress').show(); 
    }); 
    $('body').on("change", "form", function() { 

     $('.btn.btn-primary').prop("disabled", false); 
     $('#progress').hide(); 


    }); 
}); 

但我怎麼能強制腳本只有一個按鈕,不得不解僱.btn.btn-primary導致表單提交,而如果我使用例如類.btn.btn-default的按鈕提交表單而不觸發上述腳本?

編輯 我試過,但現在該腳本將永遠不會火:

$(document).ready(function() { 
    $(document).on("submit", "form", function() { 
     //^^ use document instead of body 
     //check if button has btn.btn-default class and if exist return 
     if($('button').hasClass('btn.btn-default')){ 
      return; 
     } 
     $(this).find('.btn-primary').prop("disabled", "disabled"); 
     $('#progress').show(); 
    }); 

$(document).on("submit", "form", function() { 
     //$('form').change(function() { 
     $('.btn.btn-primary').prop("disabled", false); 
     $('#progress').hide(); 


    }); 
}); 
+0

注意:由於'body'的錯誤,最好/最安全的方式是將委派的事件處理程序附加到'document' *作爲默認*(如果沒有祖先更近/更方便)。 – 2015-03-02 14:27:13

回答

2

可以返回的形式,如果按鈕具有使用hasClass

$(document).on("submit", "form", function() { 
//^^ use document instead of body 
//check if button has btn.btn-default class and if exist return 
     if($('button').hasClass('btn.btn-default'){ 
      return; 
     } 
     $(this).find('.btn-primary').prop("disabled", "disabled"); 
     $('#progress').show(); 
    }); 
+0

但我怎麼能使這個更一般,以便我的腳本將只執行,如果按鈕hasClass = .btn-primary?因爲目前我將需要添加所有的類,我不希望能夠觸發腳本內的if「if($('button')。hasClass('btn.btn-default'){」 – 2015-02-08 02:32:38

+0

'if( !$(this).find('。btn-primary'){'??? – 2015-02-08 02:34:38

+0

我寫了下面的$(document).ready(function(){ $(document).on(「submit」,「form 「,function(){^^^使用文檔代替body //檢查按鈕是否有btn.btn-default類,如果存在則返回 if(!$(this).find('btn-primary') ){ return; } $(this).find('。btn-primary')。prop(「disabled」,「disabled」); $('#progress')。show(); }) ; – 2015-02-08 02:41:22

0

類您正在測試多個合併班,所以您必須將hasClass中的班級與space(不是點)分開:

// if the button has both classes 
    if($('button').hasClass('btn btn-default')){ 
     return; 
    } 

例如,文本示例:http://jsfiddle.net/80001ra0/