2013-12-19 68 views
0

我想提交我的表格 - 通過smoke選項(bootstrap 2.0.3)批准了一個確認窗口後。直到我插入驗證後,這個工作才完成,但現在,即使您確認 - 沒有任何反應。表單不提交。通過煙確認提交表單jQuery驗證

這裏是我的代碼,嘗試了幾個選項。

你的眷顧是感激!

$("#enroller").validate({ 
      submitHandler: function() { 
      //tried also: submitHandler: function(form) { 

       var selectedCount = $(".gradeOption[value!='']").length; 

       var questionAmount = selectedCount; // count how many fields were filled 

       smoke.confirm('you are about to submit '+questionAmount+' grades - please confirm.',function(e){ 
        if (e){ 
         $("#enroller").submit(); 
         //tried also: $(form).submit(); 
        }else{ 
         smoke.alert('save was cancelled', {ok:"close"}); 
        } 
       }, {ok:"yes - save", cancel:"cancel"}); 


      } //submitHandler 

}); //validate 
+0

顯示代碼的其餘部分。你不會多次調用'validate()',是嗎?關於相關的HTML標記呢?你在'

'標籤中有一個有效的'action'屬性?任何JavaScript控制檯錯誤? – Sparky

回答

1

當您使用submitHandler回調函數,你再要某種submit或者通過ajax或默認formaction程序返回到它。

在您的submitHandler邏輯的適當位置內,放置一個$(form).submit();,它將立即觸發提交默認的formaction

submitHandler: function(form) { // <- pass in the "form" argument 
    // your other code 
    $(form).submit(); // <- trigger default form action 
} 

注意

  • 要使用$(form).submit();,你必須通過form參數到函數。

  • 您的<form>標記中必須具有有效的action屬性。

正如你所看到的,它的工作:http://jsfiddle.net/wD2Qn/


我在你的代碼,發現了以下語法錯誤。你有一個大括號,},它會過早地關閉submitHandler函數,從而打破了jQuery Validate插件。

submitHandler: function() { 

    var selectedCount = $(".gradeOption[value!='']").length; 

    var questionAmount = selectedCount; // count how many fields were filled 

    } // <--- what is this?? Prematurely closes 'submitHandler' function 

    smoke.confirm('you are about to submit '+questionAmount+' grades - please confirm.',function(e){ 
     if (e){ 
      $("#enroller").submit(); 
      //tried also: $(form).submit(); 
     }else{ 
      smoke.alert('save was cancelled', {ok:"close"}); 
     } 
    }, {ok:"yes - save", cancel:"cancel"}); 

} //submitHandler 

編輯:

他們的文檔是很稀疏,但我的猜測是,smoke.js JavaScript的插件根本無法它的功能範圍內處理任何jQuery的。

在地方$(form).submit(),嘗試純JavaScript版本:

document.getElementById("enroller").submit(); 
+0

謝謝sparky。是的,我有一個「行動」的形式。 (1)即使我通過'submitHandler'中的'form' - 它不起作用,並且(2)即使我使用ID(如上所示)'$(「#enroller」)。submit();'它不起作用(它沒有工作,沒有驗證)。 – kneidels

+0

@kneidels:再次顯示其餘的代碼。你不會多次調用'validate()',是嗎?關於相關的HTML標記呢?任何JavaScript控制檯錯誤? – Sparky

+0

@kneidels,如果你能在jsFiddle中構造一個簡潔的這個問題演示,那將是最好的。我試過了,但是我能找到的Bootstrap的最早的CDN版本是2.0.4,並且我得到了一個'smoke'沒有定義的錯誤。換句話說,如果您需要幫助,請花時間自行構建演示。通過一個工作演示,我們可以看到它的突破點。 – Sparky