2014-04-06 21 views
3

上使用jquery .validate()我有一個按鈕,觸發表單提交不工作:jQuery的.submit()後,我一個形式

$('#formButton').click(function(e) { 
    $('#form').submit(); 
)}; 

當我添加一個表單驗證,它不再提交什麼(什麼都不做):

var validate= $('#form').validate({ 
    "rules": { 
     "name": { 
     "required": true 
     } 
    } 
    }); 

這就是我想做的事情,但就像我說的.submit()函數的簡化版,一旦我使用.valiate()函數做任何事情:

$('#formButton').click(function(e) { 
    if (validate.form() === false) { 
    e.preventDefault(); 
    } else { 
    $('#form').submit(); 
    } 
)}; 

我不能使用ajax而不是.submit(),因爲我有一些類型爲'file'的輸入,而且據我所知,我不能爲這種輸入類型輸入.serialize()

任何建議爲什麼.submit()函數停止提交一次我使用.validate()?

+0

是否確認? – adeneo

+0

是的,它驗證。 – user1894929

+0

[jQuery驗證 - 工作,但不「提交」]的可能重複(http://stackoverflow.com/questions/21803040/jquery-validation-works-but-doesnt-submit) – mplungjan

回答

6

validate方法可防止submit事件的默認操作,當您提交表單時調用validate方法。如果你想提交當表單字段有效形式,你應該定義傳遞的對象上submitHandler功能的validate方法:

$('#form').validate({ 
    "rules": { 
     "name": { 
     "required": true 
     } 
    }, 
    submitHandler: function(form) { 
     form.submit(); 
    } 
}); 

由於form說法是原始DOM元素,調用它的submit方法不會調用validate方法。如果你不希望定義所提到的方法,你可以使用.get()方法獲取原始的DOM元素,並調用它的submit方法:

$('#form').get(0).submit(); 
+0

這是一個常見問題。 +1但實際上它是一個巨大的重複 – mplungjan

+0

謝謝,這讓它工作。 – user1894929