前端开发 · 2011年9月7日 0

遍历一个对象并执行其中的方法

在写一个js验证的时候发现可以少写很多东西。

js的验证代码例子如下:

var _check = {
  username:function() {
    var obj = $("form[id='signup'] input[name='username']");
    var str = $.trim(obj.val());
    if(str == '') {
      show_err(obj, "帐号不能为空");
      return false;
    } else {
      if(str.length < 3 || str.length > 14) {
        show_err(obj, "帐号长度为3-14个字符");
        return false;
      } else {
        $.post("/ajax/checkusername", {username:str}, function(rs){
          if(rs == 1) {
            show_err(obj, "帐号已存在,请换一个");
            return false;
          }
        }, 'text')
      }
    }
    return true;
  },
  password:function() {
    var obj = $("form[id='signup'] input[name='password']");
    var str = obj.val();
    if(str == '') {
      show_err(obj, "密码不能为空");
      return false;
    } else {
      if(str.length < 6 || str.length > 14) {
        show_err(obj, "密码长度为6-14个字符");
        return false;
      }
    }
    return true;
  },
  passconf:function() {
    var obj = $("form[id='signup'] input[name='passconf']");
    var str = obj.val();
    if(str == '') {
      show_err(obj, "密码确认不能为空");
      return false;
    } else {
      if(str != $("form[id='signup'] input[name='password']").val()) {
        show_err(obj, "两次密码不一至");
        return false;
      }
    }
    return true;
  }
}

 

想要简单的执行这个只需要

for(i in _check) {
  if(typeof(_check[i]) == 'function') {
    _check[i]();
  }
}