当前位置:  编程技术>WEB前端
本页文章导读:
    ▪jquery validate详解      注:本文章摘抄自:http://blog.sina.com.cn/s/blog_608475eb0100h3h1.html 一导入js库 <script src=/blog_article/"/js/jquery.js" type="text/javascript"></script> <script src=/blog_article/"/js/jquery.validate.js" type=".........
    ▪如何用原生态的JS实现类似JQuery的$("#id"),$(".selector")等功能      面试的时候遇到有人问这个问题,如果让你去用JS设计类似于JQuery 的$("#id")、$("#id").size()功能的时候,你如何去做? 这里我研究了一下,最终把它写了下来,让有需要的朋友看一下,欢迎大家.........
    ▪JavaScript学习小结(二)      关于JavaScript的版本目前Js标准有两个支撑,分别为ECMA-262和ECMA-357.357是针对262的一个XML扩展。关于JavaScript的运行环境只要有解释器,客户端/服务器端均可。由于浏览器默认装载了解释器,所.........

[1]jquery validate详解
    来源: 互联网  发布时间: 2013-11-06
注:本文章摘抄自:http://blog.sina.com.cn/s/blog_608475eb0100h3h1.html 一导入js库

<script src=/blog_article/"/js/jquery.js" type="text/javascript"></script>
<script src=/blog_article/"/js/jquery.validate.js" type="text/javascript"></script>

二、默认校验规则

(1)required:true               必输字段
(2)remote:"check.php"          使用ajax方法调用check.php验证输入值
(3)email:true                  必须输入正确格式的电子邮件
(4)url:true                    必须输入正确格式的网址
(5)date:true                   必须输入正确格式的日期 日期校验ie6出错,慎用
(6)dateISO:true                必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性
(7)number:true                 必须输入合法的数字(负数,小数)
(8)digits:true                 必须输入整数
(9)creditcard:                 必须输入合法的信用卡号
(10)equalTo:"#field"           输入值必须和#field相同
(11)accept:                    输入拥有合法后缀名的字符串(上传文件的后缀)
(12)maxlength:5                输入长度最多是5的字符串(汉字算一个字符)
(13)minlength:10               输入长度最小是10的字符串(汉字算一个字符)
(14)rangelength:[5,10]         输入长度必须介于 5 和 10 之间的字符串")(汉字算一个字符)
(15)range:[5,10]               输入值必须介于 5 和 10 之间
(16)max:5                      输入值不能大于5
(17)min:10                     输入值不能小于10

 

三、默认的提示

messages: {
    required: "This field is required.",
    remote: "Please fix this field.",
    email: "Please enter a valid email address.",
    url: "Please enter a valid URL.",
    date: "Please enter a valid date.",
    dateISO: "Please enter a valid date (ISO).",
    dateDE: "Bitte geben Sie ein g眉ltiges Datum ein.",
    number: "Please enter a valid number.",
    numberDE: "Bitte geben Sie eine Nummer ein.",
    digits: "Please enter only digits",
    creditcard: "Please enter a valid credit card number.",
    equalTo: "Please enter the same value again.",
    accept: "Please enter a value with a valid extension.",
    maxlength: $.validator.format("Please enter no more than {0} characters."),
    minlength: $.validator.format("Please enter at least {0} characters."),
    rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
    range: $.validator.format("Please enter a value between {0} and {1}."),
    max: $.validator.format("Please enter a value less than or equal to {0}."),
    min: $.validator.format("Please enter a value greater than or equal to {0}.")
},

如需要修改,可在js代码中加入:

jQuery.extend(jQuery.validator.messages, {
        required: "必选字段",
  remote: "请修正该字段",
  email: "请输入正确格式的电子邮件",
  url: "请输入合法的网址",
  date: "请输入合法的日期",
  dateISO: "请输入合法的日期 (ISO).",
  number: "请输入合法的数字",
  digits: "只能输入整数",
  creditcard: "请输入合法的信用卡号",
  equalTo: "请再次输入相同的值",
  accept: "请输入拥有合法后缀名的字符串",
  maxlength: jQuery.validator.format("请输入一个 长度最多是 {0} 的字符串"),
  

    
[2]如何用原生态的JS实现类似JQuery的$("#id"),$(".selector")等功能
    来源:    发布时间: 2013-11-06

面试的时候遇到有人问这个问题,如果让你去用JS设计类似于JQuery 的$("#id")、$("#id").size()功能的时候,你如何去做? 这里我研究了一下,最终把它写了下来,让有需要的朋友看一下,欢迎大家讨论。
首先一个页面上有这些元素


        <div id="iddv" > my name is allen zhang</div>
        <div id="dv" >i was from guizhou province</div>


我们的目的是用原生态的JS实现类似于JQuery 的$("#id")、$("#id").size()功能

1. 实现 $("#id") / $("#class") / $("div")

$ = function (str) {
      return new JQuery(str);
}

JQuery = function (str) {
       if (str.indexOf("#") == 0)
                this.dom = document.getElementById(str.substring(1));
      else if (str.indexOf(".") == 0)
               this.dom = getElementsByClassName(str);
     else
               this.dom = document.getElementsByTagName(str);
return this.dom;
}

 function getElementsByClassName(str) {
            var elements = document.getElementsByTagName('*');
            if (!elements) {
                for (var i = 0; i <= elements.length; i++) {
                    if (elements[i].className == str.substring(1)) {
                        return elements[i];
                    }
                }
            }
            return "undefined";

}

   $("#iddv"); //output: <div id="iddv" >

          $(".myclass"); //output: <div id="iddv" >

          $("div"); //[div#iddv.myclass, div#dv.dvcs]

 2. 为了实现  $("#id").size() ,在上面的基础上改了一下,同过继承的方式来实现的,如果你对js的继承方式不大了解,可以在网上搜一下,并于更好的理解以下方式。

        $ = window.JQuery = function (str) {
            return new JQuery.prototype.init(str);
        }
        JQuery.prototype = {
            name: "JQuery",
            version: "1.71",
            init: function (str) {
                if (str.indexOf("#") == 0) {
                    this.dom = document.getElementById(str.substring(1));
                    this.length = 1;
                }
                else if (str.indexOf(".") == 0) {
                    this.dom = getElementsByClassName(str.substring(1));
                    this.length = this.dom.length;
                }
                else {
                    this.dom = document.getElementsByTagName(str);
                    this.length = this.dom.length;
                }
            },
            size: function () {
                if (this.dom)
                    return this.length;
            }
        }
        
        function getElementsByClassName(str) {
            var elements = document.getElementsByTagName('*');
            if (!elements) {
                for (var i = 0; i <= elements.length; i++) {
                    if (elements[i].className == str.substring(1)) {
                        return elements[i];
                    }

    
[3]JavaScript学习小结(二)
    来源:    发布时间: 2013-11-06
  • 关于JavaScript的版本

    目前Js标准有两个支撑,分别为ECMA-262和ECMA-357.357是针对262的一个XML扩展。

  • 关于JavaScript的运行环境

    只要有解释器,客户端/服务器端均可。由于浏览器默认装载了解释器,所以通过浏览器学习Js是很方便的。

  • 关于JavaScript的类型变换

基本数据类型之间,对象和基本数据类型是可以自动转换的。

基本数据类型->对象的转换,涉及到一个概念--瞬态对象。所谓的瞬态,是指被系统临时创建用后就丢弃的。

如下代码即为瞬态对象的典型例子。

1 var s = 'abc';
2 console.log(s.length);
var s = 'abc';
console.log(s.length);

至于对象->基本数据类型的转换,则可能涉及到对象的toString,valueOf方法。

  • 关于传值和传址

基本数据类型:传值

函数和数组:传址。关于这一点还是和传统Java有区别的,JavaScript中更像是引用的传值。以下的代码较好地解释了这一点。

1 // This is another version of the add_to_totals() function. It doesn't
2 // work, though, because instead of changing the array itself, it tries to
3 // change the reference to the array.
4 function add_to_totals2(totals, x)
5 {
6 newtotals = new Array(3);
7 newtotals[0] = totals[0] + x;
8 newtotals[1] = totals[1] + x;
9 newtotals[2] = totals[2] + x;
10 totals = newtotals; // This line has no effect outside of the function
11 }

 

字符串:比较特殊,可以认为是传值。这一点和Java不同,值得注意。

  • 关于变量的重复声明

对变量没有任何影响。

 

  • 关于未定义的变量

未声明的变量不能直接读,否则会发生错误;但却可以直接赋值,赋值的过程中系统隐式声明它。

 

  • 关于变量的作用域

全局变量就是全局对象的属性,局部变量就是调用对象的属性。调用对象和全局对象共同构成了作用域链(Scope chain)。变量名解析(variable name resolution)就是在这个作用域链中查询变量的过程。按照我的理解,局部变量所在的调用对象实际上和函数相关,它是指函数被调用时创建的。该调用对象的一个属性被初始化成一个名叫 arguments 的属性,它引用了这个函数的 Arguments 对象--函数的实际参数。所有用 var 语句声明的本地变量也被定义在这个调用对象里。这个时候,调用对象处在作用域链的头部,本地变量、函数形式参数和 Arguments 对象全部都在这个函数的范围里了。其实,由于JavaScript是通过词法来划分作用域的,当一个函数在定义的时候,其作用域链就形成了,并成为该函数的内部状态。只不过当调用的时候,所创建的调用对象被添加到定义时创建的作用域链的头部。

  • 关于闭包

代码和作用域的综合体叫做闭包。所有的JavaScript函数都是闭包。

只有当一个嵌套函数被到处到它所定义的作用域外时,这种闭包才是有趣的。--摘自犀牛书

 

  •  关于类,构造函数和原型

 JavaScript还不支持真正的类,其所为的类为伪类(pseudoclass)。构造函数和原型是伪类理论的重要支撑工具。

一个对象的创建分为两步,第一步为new ,创建一个新对形象;第二步,新对象调用构造函数,并根据构造函数设置属性(方法可以看做函数属性)。比较特殊的是,所有的构造函数均有一个特殊的属性-prototype,该属性在函数被定义时就已经初始化为原型对象了。默认的,改原型对象有一个constructor属性,其值恰好为构造函数。添加给原型对象的任何属性,都会成为构造函数所初始化的对象的属性(通过属性值的查找完成继承)。

 

  • 关于类的继承

(1)子类的构造函数的原型对象=父类的实例

(2)子类的构造函数=子类的构造函数

(3)删除父类构造函数所创建的属性。(不必要,重复的)

 

示例代码:

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "http://www.w3.org/TR/html4/loose.dtd">
3 <html>
4 <head>
5 <title></title>
6 <script src="/blog_article/myJs.js" type="text/javascript"></script>
7 </head>
8 <body>
9 <!--
10 <a href="javascript:void f(5);"> Open new window </a>
11 -->
12 <input type="button" onClick="javascript:var f = new outer(1); alert(f.inner1(2));">闭包1</input>
13 <br>
14 <input type="button" onClick="javascript:var f = new outer(2); f.x=1000; alert(f.inner2(3));">闭包2</input>
15 <br>
16 <input type="button" onClick="javascript:myClosure.x=1; alert(myClosure.x); var f = myClosure(1000); alert(f()); alert(f()); alert(f()); alert(f());">作用域与闭包</
    
最新技术文章:
▪css white-space:nowrap属性用法(可以强制文字不...
▪IE里button设置border:none属性无效解决方法
▪border:none与border:0使用区别
▪html清除浮动的6种方法示例
▪三个不常见的 HTML5 实用新特性简介
▪css代码优化的12个技巧
▪低版本IE正常运行HTML5+CSS3网站的3种解决方案
▪CSS Hack大全-教你如何区分出IE6-IE10、FireFox、Chr...
▪ie6,ie7,ie8完美支持position:fixed的终极解决方案
▪小技巧处理div内容溢出
▪html小技巧之td,div标签里内容不换行
▪纯CSS实现鼠标放上去改变文字内容
▪li中插入img图片间有空隙的解决方案
软件工程/软件设计 iis7站长之家
▪父div高度不能自适应子div高度的解决方案
▪告别AJAX实现无刷新提交表单
▪从零学CSS系列之文本属性
▪HTML 标签
▪CSS3+Js实现响应式导航条
▪CSS3实例分享之多重背景的实现(Multiple background...
▪用css截取字符的几种方法详解(css排版隐藏溢...
▪页面遮罩层,并且阻止页面body滚动。bootstrap...
▪CSS可以做的几个令你叹为观止的实例分享
▪详细分析css float 属性以及position:absolute 的区...
▪IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解...
▪CSS小例子(只显示下划线的文本框,像文字一...
▪可以给img元素设置背景图
▪不通过JavaScript实现的自动滚动视差效果
▪div+CSS 兼容小摘
▪CSS的inherit与auto使用分析
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3