原型函数将检查所有其他函数返回true或false

时间:2016-10-08 04:54:34

标签: jquery oop

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;
    }

这是我的脚本,我的目的是创建一个将验证所有其他表单函数的函数,所以假设如果checkname函数return = true而checkemail函数return = true,函数submitFormFunction将检查这2个函数,如果all = true,它将传递函数并提交表单,否则让他们知道表单没有完成。

var ClassSignUpValidation = function (){};

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

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

但是现在我正在使用原型js oop,这个我的函数看起来如何,我怎么做类似我的旧函数并检查所有这些函数是返回true还是false?

错误

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

1 个答案:

答案 0 :(得分:0)

你仍然可以使用你的代码,而不是作为函数名提供引用,使用instance.functionname作为ex。

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;
        }

这应该有效。