formValidator3.3的ajaxValidator一些异常分析


Posted in Javascript onJuly 12, 2011

ajaxvalidator是大家问的最多的问题,修正一个bug(感谢网友“じ??w√”),并把大家最关心的问题,再做一次阐述。
bug现象:无论校验有没有校验通过,当控件再次得到焦点而再次失去焦点的时候tip里的提示就会停滞在得到焦点的提示
历次升级的相关记录:
a、为AjaxValidator添加一个addidvalue属性(是否自动添加id和值到url参数后面)
为了修复AjaxValidator在配置信息的时候,取不到运行时候值的bug,插件将自动在url后面自动添加,形式为"id=value"的网页参数。
在服务器端,你可以通过Request.querystring["id"]来取值。 具体演示请看demo1里的用户名输入和Default.aspx
异常说明:
开发过程中仍会出现乱码问题
例如:

$("#thename").formValidator({onfocus:"用户名至少6个字符,最多40个字符",oncorrect:"输入格式正确"}).inputValidator({min:6,max:40,onerror:"你输入的用户名非法,请确认"})//.regexValidator({regexp:"username",datatype:"enum",onerror:"用户名格式不正确"}) 
.ajaxValidator({ 
type : "get", 
url : "login.do", 
data:"action=isExist", 
datatype : "xml", 
success : function(data){ 
root = data.documentElement; 
var rowSet = root.selectNodes("//delete"); 
if( rowSet.item(0).selectSingleNode("value").text == "0" ) 
{ 
return true; 
} 
else 
{ 
return false; 
} 
}, 
buttons: $("#saveId"), 
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");}, 
onerror : "该用户名不可用,请更换用户名", 
onwait : "正在对用户名进行合法性校验,请稍候..."//function(){alert($("#pcode").val());} 
});

说明:
data:"action=isExist&thename="+$('#thename').val(),这种方式是失效的,因为$('#thename').val()是固定不变的,而且是初始值,通常为空.
修改源码:
formValidator.js
//ajax校验
ajaxValid : function(returnObj)的方法中

var parm = "clientid="+id+"&"+id+"="+encodeURIComponent(srcjo.val());
改为:
var parm = "clientid="+id+"&"+id+"="+encodeURIComponent(encodeURIComponent(srcjo.val()));
因为只有通过前台两次编码,后台一次解码就可以解决乱码问题
thename=java.net.URLDecoder.decode(thename,"UTF-8");
注意前台必须编码两次,否则会仍是乱码.
Javascript 相关文章推荐
JS input文本框禁用右键和复制粘贴功能的代码
Apr 15 Javascript
一个关于jqGrid使用的小例子(行按钮)
Nov 04 Javascript
Jquery弹出层插件ThickBox的使用方法
Dec 09 Javascript
jQuery中的pushStack实现原理和应用实例
Feb 03 Javascript
JS网页在线获取鼠标坐标值的方法
Feb 28 Javascript
JQuery实现超链接鼠标提示效果的方法
Jun 10 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
Jun 06 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
Apr 04 jQuery
vue仿ios列表左划删除
Sep 26 Javascript
js实现右键弹出自定义菜单
Sep 08 Javascript
vue-cli3 热更新配置操作
Sep 18 Javascript
在IE浏览器中resize事件执行多次的解决方法
Jul 12 #Javascript
JQuery获取当前屏幕的高度宽度的实现代码
Jul 12 #Javascript
Jquery进度条插件 Progress Bar小问题解决
Jul 12 #Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
Jul 11 #Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
Jul 11 #Javascript
jQuery :nth-child前有无空格的区别分析
Jul 11 #Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
Jul 11 #Javascript
You might like
php 调用远程url的六种方法小结
2009/11/02 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
关于jquery input textare 事件绑定及用法学习
2013/04/03 Javascript
jquery统计复选框选中示例
2013/11/05 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
javascript异步编程的六种方式总结
2019/05/17 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
在Python中使用SQLite的简单教程
2015/04/29 Python
在Python 3中实现类型检查器的简单方法
2015/07/03 Python
深入理解python中的浅拷贝和深拷贝
2016/05/30 Python
Python中装饰器兼容加括号和不加括号的写法详解
2017/07/05 Python
浅析Python四种数据类型
2018/09/26 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
Java基础类库面试题
2013/09/04 面试题
2014信息公开实施方案
2014/02/22 职场文书
大学新学期计划书
2014/04/28 职场文书
应届生求职信范文
2014/05/26 职场文书
抵押贷款承诺书
2014/05/30 职场文书
售后服务承诺函格式
2015/01/21 职场文书
安全保证书格式
2015/02/28 职场文书
原生JS实现飞机大战小游戏
2021/06/09 Javascript