- zhangqidi
- 等级: 初级会员
- 文章: 33
- 积分: 65
- 来自: ...
|
当前该validator已经非常好用,而且已经扩展了一般的ajax支持。但是因为对prototype和这个validator不熟悉,不知道这样的功能能否实现?
比如一个id输入域,用户输入了重复的id goodboy,那么返回的信息中,可能返回类似于:“建议您使用goodboy2008”之类的信息。也就是说,需要将服务器端返回的信息呈现出来。
另外,因为dwr用的比较多,非常希望扩展dwr支持。但在下能力有限,看了半天也不知道该如何动手。
只能就我佛山人的validator做一个简单的dwr包装,用处不大,仅供参考。哪位大侠有时间了能继续badqiu版本扩展一下造福一方啊。。。。
js代码
js 代码
- var dwr = new Object();
-
- dwr.Validator = function(){};
-
- dwr.Validator.Conts = {
- waitingMsg: "正在检测数据是否可用……",
- waitingMsgClassName : "dwr_waiting",
- waitingMsgColor: "gray",
- };
-
- dwr.Validator.prototype = {
- validateOne:function(element,remoteFunc,remoteObj,callback,requestMsg){
- if ( Validator.ValidateOne(element,3)) {
-
- if ( remoteFunc != null && ( remoteFunc instanceof Function ) ) {
- if ( null == requestMsg){
- requestMsg = new Object();
- }
-
- if ( typeof(requestMsg.fieldID) == "undefined") {
- requestMsg.fieldID = element.id;
- }
-
- if ( typeof(requestMsg.formID) == "undefined") {
- requestMsg.formID = element.form.id;
- }
-
- if ( typeof(requestMsg.fieldValue) == "undefined") {
- requestMsg.fieldValue = $F(element);
- }
-
- if ( typeof(requestMsg.fieldTitle)== "undefined"){
- requestMsg.fieldTitle = field.getAttribute("title");
- }
-
- var box = Validator.GetNoticeBox(element);
-
- if ( typeof(requestMsg.msgNodeID) == "undefined") {
- requestMsg.msgNodeID = box.id;
- }
-
- box.innerHTML = dwr.Validator.Conts.waitingMsg;
- box.className = dwr.Validator.Conts.waitingMsgClassName;
- box.style.color = dwr.Validator.Conts.waitingMsgColor;
-
- if ( null == callback){
- callback = this.onDWRCallback;
- }
-
- remoteFunc.call(remoteObj,requestMsg,callback);
- }
- }
- },
-
- onDWRCallback:function(responseMsg){
-
- var field = $(responseMsg.fieldID);
-
- var box = Validator.GetNoticeBox(field);
-
- if ( responseMsg.beAccepted )
- {
- box.innerHTML = field.getAttribute("okmsg");
- box.style.color = "green";
- } else
- {
- box.innerHTML = responseMsg.msgContent;
- box.className = responseMsg.msgClassName;
- box.style.color = responseMsg.msgColor;
- }
-
- return;
-
- }
-
- }
-
- var validateField = function(field)
- {
- var ac = new dwr.Validator();
- ac.validateOne(field,DWRService.validate,DWRService,null,null);
- }
在html代码里面大致为:
xml 代码
- <input type="text" id="account" onBlur="validateField(this)" title="account" dataType="Username" msg="ID不能少于6个字符,只能由英文字母、数字和下划线组成" okmsg="√" onchange="this.value = this.value.toLowerCase()"/>
服务器端需要用到的java代码:
java 代码
- public class VRequestMessage implements Serializable {
-
-
-
-
- private static final long serialVersionUID = 6203010530134833424L;
-
-
-
-
- private String fieldID;
-
-
-
-
-
- private String fieldTitle;
-
-
-
-
- private String msgNodeID;
-
-
-
-
- private String formID;
-
-
-
-
- private String fieldValue;
-
- }
-
-
-
- public class VResponseMessage implements Serializable {
-
-
-
-
- private static final long serialVersionUID = -3052764042556487608L;
-
-
-
-
- private boolean beAccepted;
-
-
-
-
- private String msgContent;
-
-
-
-
- private String fieldClassName;
-
-
-
-
- private String fieldID;
-
-
-
-
- private String msgClassName;
-
-
-
-
- private String msgColor;
-
-
-
-
- private String msgNodeID;
-
- }
-
-
-
- public interface IDWRValidationService {
-
- public VResponseMessage validate(VRequestMessage req);
- }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
返回顶楼 |
|
|
- badqiu
- 等级:
- 性别:
- 文章: 211
- 积分: 360
- 来自: 珠海
|
你说的显示特定错误信息的问题可以通过在input中指定"validateFailedMessage",现在的ajax验证可以满足包括如:用户名被注册,邮件已经被注册,验证码错误等情况
你需要显示服务器返回来的特定信息问题,可以自己修改validate-ajax,我以后也会加入这方面的支持
DWR的支持可能以后会加入
最新版本可以通过这里下载: http://cvs.cosoft.org.cn/cgi-bin/viewcvs.cgi/wonder/modules/javascript/validation/
|
返回顶楼 |
|
|