jQuery技术

·5种方法教你用jQuery重写表单验证

字号+ 作者: 来源: 2014-11-16 22:49 我要评论( )

这里给大家介绍使用jQuery的load()方法、$.get()、$.post()、$.ajax()和表单插件(Form Plugin)5种方法分别重写“表单验证”的实例,并且进一步说明中文乱码的问题。

前面我们曾介绍过使用jQuery技巧来提高代码质量,因为jQuery非常容易上手并使用简单。重写表单验证是程序员们经常做的事情,使用jQuery我们有五种方法可以选择,同时也能够解决乱码的问题。

首先,对编码知识进行简要的说明,请务必理解后再看下面的代码。发送中文字符请求时,如果使用get方式,运行正常;而使用post方法则会出现乱码。这是由于异步对象XMLHttpRequest在处理返回的responseText的时候,是按UTF-8编码进行解码的。

如果你原来的网页编码是gb2312的话,当然会发生编码的冲突了;如果你原来的网页编码是utf-8,那么就不会出现中文乱码的问题了。

出现了中文乱码该怎么办呢?通常的解决办法是用escape()对发送的数据进行编码,然后在返回的responseText上再用unescape()进行解码。然而在JavaScript编程中通常不推荐使用escape()和unescape(),而推荐使用encodeURI()和decodeURI()。请看下面的“表单验证实例”,或许对你学习编码知识有一定的帮助。

第一、jQuery的load(url,[data],[callback])方法

语法说明:url为异步请求的地址,data用来向服务器传送请求数据,为可选参数。一旦data参数启用,整个请求过程将以post的方式进行,否则默认为get方式。如果希望在get方式下也传递数据,可以在url地址后面用类似“dataname1=data1&dataName2=data2”的方法。

callback为Ajax加载成功后运行的回调函数。另外使用load()方法返回的数据,不再需要考虑是文本还是XML,jQuery都会自动进行处理。好了,下面马上使用load()方法实现“自动表单验证”实例。首先是,html框架,5个例子都是一样的,如下:

  1. <form>   
  2. 用户昵称:<input type="text" onblur="startCheck(this)" name="User" id="User"><span id="UserResult"></span><br />   
  3. 输入密码:<input type="password" name="passwd1"><br />   
  4. 确认密码:</td><td><input type="password" name="passwd2"><br />   
  5. <input type="submit" value="注册" class="button">   
  6. <input type="reset" value="重置" class="button">   
  7. </form>  

必要说明:

1、onblur="startCheck(this)" 这是JavaScript代码(简称js) ,意思是text文本框失去焦点时触发自定义函数startCheck(),this是指代text文本框的值。

2、<span id="UserResult"></span>用来存放异步对象返回的结果。

  1. jQuery代码如下:  
  2.  
  3. <script language="javascript" src="jquery.min.js"></script>   
  4. <script language="javascript">   
  5. function startCheck(oInput){   
  6.     //首先判断是否有输入,没有输入直接返回,并提示   
  7.     if(!oInput.value){   
  8.         oInput.focus(); //聚焦到用户名的输入框   
  9.         document.getElementById("UserResult").innerHTML = "User cannot be empty.";   
  10.         return;   
  11.     }   
  12.     oInput=$.trim(oInput.value); //使用jQuery的$.trim()方法过滤左右空格   
  13.     var sUrl = "action.asp?user=" + oInput;   
  14.     sUrl=encodeURI(sUrl); //使用encodeURI()编码,解决中文乱码问题   
  15.     $("#UserResult").load(sUrl,function(data){   
  16.         $("#UserResult").html(decodeURI(data)); //使用decodeURI()解码   
  17.         }   
  18.     );   
  19. }   
  20. </script>  

必要说明:

1、使用jQuery时,都必须加载jquery.min.js文件,可以到http://jquery.com/官网下载最新的版本。

2、判断是否有输入时,用的全是JavaScript语法。

3、对传递给“处理页”的参数进行encodeURI编码,以解决中文乱码问题。

4、load()中的function函数是为了对返回结果进行decodeURI解码,以解决中文乱码问题。

5、对$.trim()、$("#UserResult")、html等jQuery语法不理解的,可以参考jQuery中文手册。本站提供下载。

  1. action.asp处理页代码如下:  
  2.  
  3. <%   
  4. if(Request("user")="eko") then   
  5. Response.Write "Sorry, " & Request("user") & " already exists."   
  6. else   
  7. Response.Write Request("user")&" is ok."   
  8. end if   
  9. %> 

必要说明:

1、action.asp处理页的编码是GB2312,如果把"Sorry..already exists..is ik"等英文改为中文,请看下面的说明。

2、使用post方法会出现乱码,这是由于异步对象XMLHttpRequest在处理返回的responseText的时候,是按UTF-8编码进行解码的。

3、所以post方式的话,必须把action.asp页另存为时,第三项的编码由 ANST 改为 UTF-8 (请务必记住!!)。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 7个有用的jQuery小技巧

    7个有用的jQuery小技巧

    2016-02-26 13:02

  • jQuery制作select双向选择列表

    jQuery制作select双向选择列表

    2016-02-26 11:00

  • 全面详细的jQuery常见开发技巧手册

    全面详细的jQuery常见开发技巧手册

    2016-02-26 10:02

  • 强大的jQuery移动插件Top 10

    强大的jQuery移动插件Top 10

    2016-02-25 09:05

网友点评
l