2009-02-12 55 views
0

我正在使用jQuery表單插件來提交AJAX請求。我正在嘗試做一些簡單的驗證(確保字段已填寫),然後再提交。我不想在提交之前運行任何AJAX驗證。在我添加beforeSubmit之前添加ajaxform()方法的選項,表單將提交和我的控制器代碼將運行良好。一旦我添加了帶有驗證函數名稱的beforeSubmit選項,表單將不會提交,無論我從validate方法返回false,true還是nothing。這裏是我的,設置了形式初始代碼:無法使用JQuery表單插件簡單驗證來提交表單

$(document).ready(function() { 
var options = { 
    beforeSubmit: function(data, form, options) { return validate(data, form, options); }, 
    url: '/PromoManagement/Images/AddImages?partial=true', 
    success: updateImageList 
}; 

    $('#frmAddImages').ajaxForm(options); 
}); 

,這裏是我的驗證功能:

function validate(data, form, options) { 
    var returnMessage = new Array(); 

    $('#txtImagePath,#txtImageCaption').removeClass('validationError-input'); 
    clearValidation(); 

    if ($('#txtImagePath').val().length == 0) { 
     returnMessage.push('<li>Image Path is required</li>'); 
     $('#txtImagePath').addClass('validationError-input'); 
    } 
    else { 
     if (!parseFileExtension($('#txtImagePath').val())) { 
      returnMessage.push('<li>Please provide an image with an extension of .jpg, .gif, or .png</li>'); 
      $('#txtImagePath').addClass('validationError-input');  
     }  
    } 

    if (returnMessage.length > 0) { 
     $('.errorList').show(); 
    } 

    if (returnMessage.length != 0) { 
     buildValidationList(returnMessage); 
     return false; 
    } 
    else { 
     return true; 
    } 

} 

我都試過,如果沒有遇到任何錯誤返回什麼,但我得到了相同的結果。我能夠打入驗證代碼並查看函數返回的內容,並且始終如預期。我在這裏錯過了什麼嗎?

回答

2

我認爲beforeSubmit沒有將窗體傳遞給validate函數。嘗試在匿名函數中包裝驗證並提供正確的表單參數。

編輯看起來像beforeSubmit函數有三個參數(API),其中第二個是形式。我已更新我的示例以反映這一點。看完你的代碼後,看起來你並沒有使用它 - 所以這也被更新了。我不確定到底發生了什麼,因爲它似乎應該起作用。你有沒有確認你的驗證功能沒有得到任何javascript錯誤?

beforeSubmit: function(data,form,options) { 
    return validate(); 
} 
+0

試過這個:我得到了同樣的結果。 validate()函數被調用,返回true,但表單從不提交。 – 2009-02-12 21:45:40