+ -
当前位置:首页 → 问答吧 → 表单验证若干问题?!

表单验证若干问题?!

时间:2010-03-09

来源:互联网

大家好,小弟在使用表单验证,一时晕乎,请求大家解惑!

1.rules方法里如何完成username,password,password_confirm的验证?!
为什么我在插件里找不到该三类所谓的方法?!
2.rules方法又是如何工作?!
html:
$(document).ready(function() {
 // validate signup form on keyup and submit
 
 $("#signupform").validate({
  rules: {
   username: {
    required: true,
    minlength: 2
   },
   email: {
    email:"#email",
    required: true    
   },
   password: {
    password: "#username"
   },
   password_confirm: {
    required: true,
    equalTo: "#password"
   }
  },
   messages: {
   username: {
    required: "Enter a username",
    minlength: jQuery.format("Enter at least {0} characters")
   },
   email: {
    required: "Enter a email",
    minlength: jQuery.format("Please enter a valid email address")
   },
   password_confirm: {
    required: "Repeat your password",
    minlength: jQuery.format("Enter at least {0} characters"),
    equalTo: "Enter the same password as above"
   }
  }; 
});

插件中的方法:

rules: function(command, argument) {
  var element = this[0];
  
  if (command) {
   var settings = $.data(element.form, 'validator').settings;
   var staticRules = settings.rules;
   var existingRules = $.validator.staticRules(element);
   switch(command) {
   case "add":
    $.extend(existingRules, $.validator.normalizeRule(argument));
    staticRules[element.name] = existingRules;
    if (argument.messages)
     settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
    break;
   case "remove":
    if (!argument) {
     delete staticRules[element.name];
     return existingRules;
    }
    var filtered = {};
    $.each(argument.split(/\s/), function(index, method) {
     filtered[method] = existingRules[method];
     delete existingRules[method];
    });
    return filtered;
   }
  }
  
  var data = $.validator.normalizeRules(
  $.extend(
   {},
   $.validator.metadataRules(element),
   $.validator.classRules(element),
   $.validator.attributeRules(element),
   $.validator.staticRules(element)
  ), element);
  
  // make sure required is at front
  if (data.required) {
   var param = data.required;
   delete data.required;
   data = $.extend({required: param}, data);
  }
  
  return data;
 }
});

作者: jc_dreaming   发布时间: 2010-03-09

真正的验证又不是这段代码,这段就相当于初始化参数吧,就是些内部方法
你从891行开始看

作者: ywqbestever   发布时间: 2010-03-09

谢谢,ywqbestever 的回答!
但请问rules方法里如何完成username,password,password_confirm的验证?!
为什么我在插件里找不到该三类所谓的方法?!

作者: jc_dreaming   发布时间: 2010-03-09

呵呵,谢谢ywqbestever 提醒,我看了一下代码,终于释疑!
rules: {
   username: {
    required: true,
    minlength: 2
   },
其实rules是初始化参数的话,那么username:又是做什么的呢?!
呵呵,原来,工作的是required&minlength()!

作者: jc_dreaming   发布时间: 2010-03-09

username是input的name么,然后插件根据他来绑定事件

作者: ywqbestever   发布时间: 2010-03-09