2016-10-08 7 views
-2

Я выполняю функцию проверки, submitForm функция - проверить значение возвращаемой функции true или false, но у меня есть эта ошибка, я не знаю почему.функция проверки достоверности, «длина» неопределенного

Uncaught TypeError: Cannot read property 'length' of undefined

var ClassSignUpValidation = function(){}; 

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

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

//SUBMIT FORM VALIDATION 
ClassSignUpValidation.prototype.SubmitForm = function (event) 
{ 
    var sumbit_errorspan = $("#submit-errorResult"); 
    //array validation function 
     var validators = [this.CheckName, this.CheckPassword]; 
     // bypass all function 
     var valid = validators.reduce(function(valid, validator){ 
     return validator() && valid; 
     }, true); 

     if(valid){ 
     sumbit_errorspan.html(''); 
     }else{ 
     sumbit_errorspan.css('color', 'red'); 
     sumbit_errorspan.html('sumbit not requirements.'); 
     } 
     return valid; 
} 

точка ошибки

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){ 
+1

ошибка не соответствует коду вы предоставляете. Я не вижу доступа к свойствам длины нигде. Проверьте, является ли другая часть вашего кода виновной. –

+0

Я не уверен, что не так – babayaga

+2

Функция CheckName ожидает _target, иначе она будет равна нулю. Таким образом, весь процесс разваливается, и длина null будет неопределенной. 'return validator() && valid;' это строка, в которой вы можете передать _target –

ответ

0

Ваш IF заявление должно выглядеть следующим образом:

username_value && username_value.length >= 4 

Таким образом, вы будете уверены в том, что есть значение (и поэтому элемент, а), и что его длина превышает 4.

Смежные вопросы