2011-11-12 87 views
0

我使用Singleton模式創建一個表單處理腳本...重寫的preventDefault()在JavaScript模塊模式

我不想發佈所有的代碼了,但第一種方法使用的preventDefault:

//public methods 
    handleSubmit: function (e) { 

     //prevent the default submission process 
     e.preventDefault(); 

}, 

的preventDafault確實是劫持的形式停止服務器端處理它應該。

然後,我創建了驗證規則......如果所有驗證規則通過它完成了與這個方法:

validData: function (error) { 
     if (error.length === 0) { 
      return true; 
     } else { 
      // If there are errors in the form then run alert message 
      alert(error); 
     } 

    }, 

那是,如果沒有錯誤,那麼服務器端腳本處理形式和項目被添加到數據庫(我沒有使用AJAX,因爲我有一個問題與圖像)

但是,返回true不起作用在這裏......我不知道爲什麼,但我確信有一個非常簡單的理由吧

+0

難道你不能只是以編程方式觸發提交而不是返回true?一旦你阻止了默認,我不認爲返回true會做任何事情。 '.submit()' – mrtsherman

+0

你期望真正的返回值是做什麼的? – Pointy

回答

0

可以喲你跳過preventDefault函數,只是做這樣的事情?

var hasErrors = false; 
    if(myLogicHasErrors){ 
     hasErrors = true; 
    } 
    if(hasErrors) return false; 

這將只是防止表單提交沒有防止默認除非你的驗證檢查通過。

+0

沒問題。而不是「返回false」我用「return CS.AddNode.Form.submit():」編輯:不,它不對 – AndyW

+0

終於找到了一個辦法。我將「return false」放入每個單一方法的末尾,直到最終方法中的錯誤等於0,然後運行「return CS.AddNode.Form.submit();」 – AndyW

+0

hmmmm ...不確定你需要'返回CS.AddNode.Form.submit();'在你的情況。我想你不需要返回,因爲你只是告訴表單提交()。 –