对于jQuery formValidator ver3.3 中ajaxValidator中的url无法传递动态值的处理方式

来源:互联网 发布:淘宝新品标签有什么用 编辑:程序博客网 时间:2024/04/30 00:34

formValidator3.3的ajaxValidator一些异常(1)

http://blog.csdn.net/fjfdszj/archive/2009/12/02/4927692.aspx

以下是作者对ajaxValidator的声明:

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

 

处理方式:

 //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");

注意前台必须编码两次,否则会仍是乱码.

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

以上方案仅能解决传递本身控件的id,而仍无法传递其他值.

 

如:有如下需求需要在指定的区域中是否在所选的服务时间内,则必须动态传递省,市,县信息

采用原方案,代码如下:

$("#pbookingtime").focus(function(){WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'%y-%M-%d',maxDate:'%y-%M-/#',oncleared:function(){$(this).blur();},onpicked:function(){$(this).blur();}})}).formValidator({onshow:"请输入的预约时间",onfocus:"请输入的预约时间",oncorrect:"√"}).inputValidator({min:"2008-01-01 00:00:00",max:"2010-01-01 23:59:59",type:"datetime",onerror:"日期必须在/"1900-01-01/"和/"3000-01-01/"之间"})//;//.defaultPassed();
  .ajaxValidator({
      type : "get",
   url : "<%=path%>/archives/serTime.do",
   data:"action=serTimeVerify&ram=" + Math.random()+"&search.pprovince="+$("#pprovince").val()+"&search.pcity="+$("#pcity").val()+"&search.pcounty="+$("#pcounty").val(),
   datatype : "xml",
   success : function(data){
       root = data.documentElement;
       var rowSet = root.selectNodes("//result");
             if( rowSet.item(0).selectSingleNode("value").text == "0" )
    {
                 return false;
    }
             else
    {
                 return true;
    }
   },
   buttons: $("#btnupdate"),
   error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
   onerror : "预约时间不在服务时间范围内!",
   onwait : "正在对预约时间进行合法性校验,请稍候..."
  });

 

   /*对于ajaxValidator动态传值无法成功,参考ajaxValidator原代码用以下方式实现*/

$("#pbookingtime").focus(function(){WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'%y-%M-%d',maxDate:'%y-%M-/#',oncleared:function(){$(this).blur();},onpicked:function(){$(this).blur();}})}).formValidator({onshow:"请输入的预约时间",onfocus:"请输入的预约时间",oncorrect:"√"}).inputValidator({min:"2008-01-01 00:00:00",max:"2010-01-01 23:59:59",type:"datetime",onerror:"日期必须在/"1900-01-01/"和/"3000-01-01/"之间"})//;//.defaultPassed();

 .functionValidator({
      fun:function(val,elem){
     $.ajax(
     { 
      mode : "abort",
      type : "get",
      url : "<%=path%>/archives/serTime.do",
      data : "action=serTimeVerify&search.pbookingtime=" + $("#pbookingtime").val()+"&search.pprovince="+$("#pprovince").val()+"&search.pcity="+$("#pcity").val()+"&search.pcounty="+$("#pcounty").val(),
      dataType : "xml",
      success : function(data){
          root = data.documentElement;
          var rowSet = root.selectNodes("//result");
                if( rowSet.item(0).selectSingleNode("value").text == "0" )
       {
        $.formValidator.setTipState(elem,"onError","预约时间不在服务时间范围内!");
                    return false;
       }
                else
       {
                    $.formValidator.setTipState(elem,"onError","√");
                    return true;
       }
      },
      complete : function(){
       $("#btnupdate").attr({"disabled":false});
       $("#btnupdateauding").attr({"disabled":false});
      },
      beforeSend : function(xhr){
       //再服务器没有返回数据之前,先回调提交按钮
       $("#btnupdate").attr({"disabled":true});
       $("#btnupdateauding").attr({"disabled":true});
       $.formValidator.setTipState(elem,"onLoad","正在对预约时间进行合法性校验,请稍候...");
      },
      error : function(){
          $.formValidator.setTipState(elem,"onError","服务器没有返回数据,可能服务器忙,请重试");
          alert("服务器没有返回数据,可能服务器忙,请重试");
      }
     });
   }
  });
  

原创粉丝点击