posts - 19, comments - 0, trackbacks - 0, articles - 2

2012年5月13日

posabsolute-jQuery-Validation-Engine使用总结

下载地址

https://github.com/posabsolute/jQuery-Validation-Engine

这个是我在做CMS时找到的一个jquery插件,自己看了作者的使用手册,记录一下自己的使用心得。

 

css目录:是插件用到的显示样式需要的css文件所在文件夹

demos目录:是相关demo,例子

js目录:是一些核心的js文件

rundemo.bat是作者写的测试程序windows下的,我运行了,但是报错。我没查找原因,以后再看

rundemo.shlinux下的测试程序

第一步在表单页面引入相应的文件

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js" type="text/javascript"></script>

或者导入本地的jquery.js

<script type="text/javascript" src="js/jquery-1.6.min.js"></script>

第二步引入本地化文件和验证引擎

下面是本地化文件,我们用中文那就引入 js/jquery.validationEngine-zh_CN.js

<script src="js/jquery.validationEngine-en.js" type="text/javascript" charset="utf-8"></script> 

下面这个是验证核心文件

<script src="js/jquery.validationEngine.js" type="text/javascript" charset="utf-8"></script>

最后引入规则样式

<link rel="stylesheet" href="css/validationEngine.jquery.css" type="text/css"/>

 

 

 

下面开始举例,我们模拟一个表单form提交到一个servlet中,判断提交的验证码是否正确。如果正确就

跳转到主页,否则提示验证码错误。

第一步。我们需要几个工具类

//AjaxValidationFormResponse这个类用来存储验证信息和负责把验证信息转换成json格式。是作者demo中提供的

public class AjaxValidationFormResponse {

 

// the html field id

private String id;

 

// true, the field is valid : the client logic displays a green prompt

// false, the field is invalid : the client logic displays a red prompt

private Boolean status;

 

// either the string to display in the prompt or an error

// selector to pick the error message from the translation.js

private String error;

 

public AjaxValidationFormResponse(String fieldId, Boolean s, String err) {

id = fieldId;

status = s;

error = err;

}

 

public String toString() {

 

StringBuffer json = new StringBuffer();

json.append("[\"").append(id).append("\",").append(status).append(",\"").append(error.toString()).append("\"]");

return json.toString();

}

}

第二部表单

<form action="/cms/LoginServlet" method="get" id="form1">

<input type="text" name="code" id="code" value="" />

</form>

效果如图

 

第三部分js代码

<script>

            

//这个方法是验证请求执行之前被调用

function beforeCall(form, options){

if (console) 

console.log("Right before the AJAX form validation call");

return true;

}

            

// 这个方法是验证后的回调方法

function ajaxValidationCallback(status, form, json, options){

if (console) 

console.log(status);

                

if (status === true) { //这里的status是后台返回的json中的true

window.location="/cms/main.jsp";//验证成功后重定向到main.jsp页面

alert("the form is valid!");

// uncomment these lines to submit the form to form.action

// form.validationEngine('detach');

// form.submit();

// or you may use AJAX again to submit the data

}

}

            

 

//这个是调用核心方法,formid是你表单的ID我这里是form1

jQuery(document).ready(function(){

jQuery("#formID").validationEngine({

ajaxFormValidation: true, //使用ajax调用

onAjaxFormComplete: ajaxValidationCallback, //设置验证后的回调函数

onBeforeAjaxFormValidation: beforeCall //设置验证前的调用的函数

});

});

 

以上是前台代码下面是java代码

String checkcode = req.getParameter("code"); // 接收用户输入的验证码

// 提取刚刚生成的验证码,使用session存储。验证码生成这里不再细说

String Sessioncodes = (String) req.getSession().getAttribute("codes");

这里就用到了前面提到的工具里。AjaxValidationFormResponse,使用了泛型

ArrayList<AjaxValidationFormResponse> errors = new ArrayList<AjaxValidationFormResponse>();

if (!Sessioncodes.equalsIgnoreCase(checkcode))

{

// 验证码不正确。跳转到登陆页面 //如果验证错这里要用falsecheckcode,后面会有解释

errors.add(new AjaxValidationFormResponse("code", false,

"checkcode"));

}

else

{//如果验证没错误,这里要用true,“you got it”这个我拷贝例子里的具体我也不清楚

errors.add(new AjaxValidationFormResponse("code", true,

"You got it!"));

}

 

String json = "true"; //定义一个字符,为啥这是为true我也不知道,照搬开发者的源代码

if (errors.size() != 0) //如果链表里有错误转换为json格式数据

{

json = AjaxValidationFormResponse.genJSON(errors);

}

resp.getWriter().print(json);

============

下面这个方法就是把链表转换为字符串,自己可以用jackson或者gson或者别的工具转换,也可以用这个方法,这个是开发者在demo中用到的

public static String genJSON(ArrayList<AjaxValidationFormResponse> errors) {

StringBuffer json = new StringBuffer();

json.append('[');

for (int i = 0; i < errors.size(); i++) {

 

AjaxValidationFormResponse err = errors.get(i);

json.append(err.toString());

if (i < errors.size() - 1) {

json.append(',');

}

}

json.append(']');

return json.toString();

}

=============

以上就是大体代码,整个流程,就是js代码 jQuery("#formID").validationEngine,先执行,然后提交到后台验证,不管你验证成功还是失败,都要返回json格式数据,就是把ArrayList<AjaxValidationFormResponse> errors = new ArrayList<AjaxValidationFormResponse>();转换成相应的json返回,验证正确就在errors里加入

errors.add(new AjaxValidationFormResponse("code", true,"这里先自己随便写"));错误就加入

errors.add(new AjaxValidationFormResponse("code", false,"checkcode"));不要验证通过就不加入了,只加入错误的。我就犯了这样的错误,就一直报 ajax erros paraseerror错误,这个是重点

现在说说这里为什么是checkcode,因为在这个的国际化文件里有这个文件

js/languages/jquery.validationEngine-zh_CN.js

打开

 

看到了吧。我们自己按照他的格式自己添加一个就行

然后后台验证返回后 resp.getWriter().print(json);然后执行js部分的function ajaxValidationCallback函数

当返回中有true时,//new AjaxValidationFormResponse("code", true,"这里先自己随便写")

执行

if (status === true)  //这里的status是后台返回的json中的true

window.location="/cms/main.jsp";//验证成功后重定向到main.jsp页面

 

Thinking-c3t总结

 

 

 

posted @ 2012-05-13 14:58 c3tc3tc3t 阅读(72) 评论(0) 编辑

2012年5月12日

<a href="" onclick="yzm.src='/Cms/CheckcodeServlet'"><img id="yzm" src="/Cms/CheckcodeServlet" ></img></a>

 

checkcodeServlet是生成验证码图片的servlet

posted @ 2012-05-12 14:30 c3tc3tc3t 阅读(11) 评论(0) 编辑

2012年5月11日

eg:

      Function.prototype.method = function(name, func){
                this.prototype[name] = func;
                return this;
            }


            function a(){ //要添加的方法
                alert(1);
            }
            
            function A(){ //一个类
            }
            
            
            A.method("f",a);  //把添加的a方法重命名为f
            var b = new A(); //创建A的势力b
            b.f(); //b拥有了f方法。也就是a方法

posted @ 2012-05-11 11:17 c3tc3tc3t 阅读(6) 评论(0) 编辑

2012年5月7日

上大学只是学习知识的一个途径,是想提高自身能力,学更多知识。深造自己的方式。大部分人的观念是上大学。将来有好工作。为了利益上大学。他们也许都不知道为啥上大学。只是大家都上,我也要上。就像现在的婚姻。人们想从结婚中获得太多的东西。房子车子。一辈子不用奋斗了。长期饭票,这种错误的观念导致婚姻变味,上大学也是如此。人们往往寄予大学很多希望,希望通过上大学得到什么。而结果不近如人意,然后人们就说上大学如何的没用。其实大学只不过是个学习的地方。如果你不想学习可以不去。如此而已,和你未来的人生是否幸福是否成功毫无关系,只有作为一个有理想,有信念,吃苦耐劳。有毅力的人,你才能过上你想要的生活,

posted @ 2012-05-07 09:12 c3tc3tc3t 阅读(13) 评论(0) 编辑

2012年5月6日

我觉得一般手机厂商。像三星HTC。卖的是产品。手机。平板。而苹果一是卖产品二就是把买的人变成忠诚的客户。苹果的产品或许是把一个普通人变成苹果忠诚粉丝的工具,如果你成为了苹果的粉丝。那以后苹果出的任何产品。假如你有钱,你需要用什么,苹果有相关的产品,你一定会买。你可能不会买别的牌子。但是苹果你肯定会买,变成了习惯,变成了生活方式。appler,就像现在你买东西,你首先想到的是网购,淘宝。。

posted @ 2012-05-06 22:53 c3tc3tc3t 阅读(12) 评论(0) 编辑

2012年4月12日

摘要: CREATE DATABASE "bbk" MAXDATAFILES 500 MAXINSTANCES 8 MAXLOGFILES 32 CHARACTER SET "UTF8" NATIONAL CHARACTER SET AL16UTF16 ARCHIVELOG DATAFILE '/u01/oradata/bbk/system01.dbf' size 300M EXTENT MANAGEMENT LOCAL DEFAULT TEMPORARY TABLESPACE temp TEMPFILE '/u01/oradata/bb阅读全文

posted @ 2012-04-12 21:26 c3tc3tc3t 阅读(17) 评论(0) 编辑

2012年3月8日

摘要: 检查相关的开发工具和一些包yum install -q gcc make binutils openmotif setarch compat-db compat-gcc compat-gcc-c++ compat-libstdc++ compat-libstdc++-develyum install xorg-x11-deprecated-libs5.4上安装Oracle 10g时提示如下错误:Exception in thread “main” java.lang.UnsatisfiedLinkError: /tmp/OraInstall2009-11-25_02-34-42PM/jre/1阅读全文

posted @ 2012-03-08 21:40 c3tc3tc3t 阅读(16) 评论(0) 编辑

2012年1月21日

摘要: 1.现在睡觉的话会做梦,而现在学习的话会让梦实现。This moment will nap, you will have a dream; But this moment study,you will interpret a dream.2.我无所事事地度过的今天,是昨天死去的人们所奢望的明天。I leave uncultivated today, was precisely yesterday perishes tomorrow which person of the body implored.3.感到晚了的时候其实是最快的时候。Thought is already is late, ex阅读全文

posted @ 2012-01-21 18:15 c3tc3tc3t 阅读(12) 评论(0) 编辑

2011年12月10日

摘要: 自己做了一个表格预览下载地址http://dl.dbank.com/c0doibd9sf阅读全文

posted @ 2011-12-10 10:33 c3tc3tc3t 阅读(40) 评论(0) 编辑

2011年12月9日

摘要: package com.zl;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//request编码问题public class RequestDemo4 extends HttpServlet{ @Override protected void doGet(阅读全文

posted @ 2011-12-09 18:48 c3tc3tc3t 阅读(109) 评论(0) 编辑