2016-10-08 20 views
0
function checkname(){return false;} 

function checkemail(){return false;} 

    //submit 
    function submitFormFunction(event){ 
     //array validation function 
     var validators = [checkname, checkemail]; 
     // bypass all function 
     var valid = validators.reduce(function(valid, validator){ 
     return validator() && valid; 
     }, true); 

     if(valid){ 
     $("#othersubmit-result").html(''); 
     }else{ 
     $("#othersubmit-result").css('color', 'red'); 
     $("#othersubmit-result").html('sumbit not requirements.'); 
     } 
     return valid; 
    } 

這是我的紙條,我的意圖是讓這將驗證所有其他形式的功能的功能,因此,可以說,如果檢查名函數返回= TRUE和checkemail功能return = true,函數submitFormFunction將檢查這2個函數,如果all = true,它將通過函數並提交表單,否則讓他們知道它們的表單沒有完成。原型功能將檢查所有其他函數返回true或false

var ClassSignUpValidation = function(){}; 

ClassSignUpValidation.prototype.CheckName = function (_target) 
{ 
return false; 
} 

ClassSignUpValidation.prototype.CheckEmail = function (_target) 
{ 
return false; 
} 

,但現在我使用的原型JS空中接力,這是我的功能看起來像,怎麼做我做類似的功能像我的舊的和檢查所有這些功能都是它們返回真或假?

錯誤

ClassSignUpValidation.prototype.CheckName = function (_target) 
{ 
    //set target id to jquery 
    _target = "#" + _target; 

    //set variable 
    var username_target = $(_target); 
    var username_value = username_target.val(); 
    var username_errorspan = $("#user-errorResult"); 

****//here is the error**** 
if (username_value.length >= 4){ 
    $.ajax({ 
    type:"POST", 
    url:"/main/class/classvalidation.php", 
    async:false, 
    data:{ 
    "username": username_value 
    }, 
    success: function(data) 
    { 
     var usernameAvailable = JSON.parse(data); 
     var color = usernameAvailable.exists ? "#dfe0e6" : "red"; 
     username_errorspan.html(usernameAvailable.message); 
     username_errorspan.css("color", color); 
     username_target.css("border-color", color); 
     if(usernameAvailable.exists === true){ 
     return true; 
     } 
    } 
    }); 
}; 

return false; 
} 

錯誤

if (username_value.length >= 4){ here is the error point in 

回答

0

你仍然可以使用自己的代碼和而不是給引用作爲函數名使用instance.functionname爲前。

submitFormFunction = function(event){ 
      //array validation function 
      var validator = new ClassSignUpValidation 
      var validators = [validator.checkname, validator.checkemail]; 
      // bypass all function 
      var valid = validators.reduce(function(valid, validator){ 
      return validator() && valid; 
      }, true); 

      if(valid){ 
      $("#othersubmit-result").html(''); 
      }else{ 
      $("#othersubmit-result").css('color', 'red'); 
      $("#othersubmit-result").html('sumbit not requirements.'); 
      } 
      return valid; 
     } 

這應該工作。

+0

有錯誤:未捕獲TypeError:無法讀取未定義的屬性「長度」 – babayaga

+0

您是否傳遞必要的參數等,因爲關於長度的錯誤不是來自原型或類,而是來自其他代碼,因此請檢查控制檯以獲取錯誤發生 –

+0

我不確定我的代碼有什麼問題,請檢查我編輯錯誤點,感謝您的幫助。 – babayaga