jquery 懸浮驗證框架 jQuery Validation Engine


中文api 地址   http://code.ciaoca.com/jquery/validation-engine/   和bootstarp 一起使用不會像easyui  驗證那樣生硬


修改版


原版 包涵實例代碼

這里記錄幾點
ps:驗證規則 validate[required] 必須要加上 required ,其它加的自定義規則才會生效


$('#id').validationEngine('validate') 直接調用驗證不會驗證異步  一直都是false,如果不考慮使用異步或自己實現異步,可以考慮使用該方法驗證

解決方法:
1.不使用$('#id').validationEngine('validate')的方法

   
   
   
           
  1. $addDiv.find('#addForm').submit();
提交

   
   
   
           
  1. $addDiv.find('#addForm').validationEngine({
  2. maxErrorsPerField:1,
  3. ajaxFormValidation: true,
  4. onBeforeAjaxFormValidation: function(){
  5. $addDiv.find('#addForm').attr("action","#");//這是把action修改為#是防止表單多次提交
  6. $.post((baseURL+'/housemanage/nhousegroupdef/add'),$($addDiv.find('#addForm')).serialize(),function(rec){
  7. if(rec.code == "0"){
  8. $.msg.success("新增成功!");
  9. nhousegroupdefglobal.sbtable.bootstrapTable("removeAll")
  10. nhousegroupdefglobal.sbtable.bootstrapTable('refresh');
  11. $addDiv.modal("hide")
  12. }else{
  13. $.msg.fail(rec.desc);
  14. }
  15. },"json").error(function(){
  16. $.msg.fail("新增失敗!");
  17. });
  18. }
  19. });

在 初始化屬性 onBeforeAjaxFormValidation 定義提交前並驗證完畢的方法即可

自定義規則的方法


   
   
   
           
  1. $.validationEngineLanguage.allRules.switch={
  2. "func": function(field,rules,i,options){
  3. if(!$(field).val()){
  4. return false;
  5. }
  6. return true;
  7. },
  8. "alertText": "* 請選擇內容"
  9. }
  10. $.validationEngineLanguage.allRules.datecompare={
  11. "func": function(field,rules,i,options){
  12. if($('#regEndtime').val()&&$('#regBegintime').val()>$('#regEndtime').val()){
  13. return false;
  14. }
  15. return true;
  16. },
  17. "alertText": "* 報名開始時間不能大於報名截止時間,請修改!"
  18. }
  19. $.validationEngineLanguage.allRules.lookhousedatecompare={
  20. "func": function(field,rules,i,options){
  21. if($('#regEndtime').val()&&$('#lookhousetime').val()<$('#regEndtime').val()){
  22. return false;
  23. }
  24. return true;
  25. },
  26. "alertText": "* 看房時間必須大於報名截止時間,請修改!"
  27. }
  28. $.validationEngineLanguage.allRules.numcompare={
  29. "func": function(field,rules,i,options){
  30. if($('#maxNum').val()&&$('#minNum').val()>$('#maxNum').val()){
  31. return false;
  32. }
  33. return true;
  34. },
  35. "alertText": "* 成團最低人數必須不能大於成團最高人數,請修改!"
  36. }
  37. $.validationEngineLanguage.allRules.lookhousenameajax={
  38. "url": baseURL+"/housemanage/nhousegroupdef/vaild/lookhousename",
  39. "alertText": "* 看房團名稱已被其它用戶定義過,請修改!",
  40. "alertTextLoad": "* 正在確認名稱是否有其他人使用,請稍等。"
  41. }

建議采用上面的方法 ,不用修改 原生的文件,直接在 $ . validationEngineLanguage . allRules 屬性上擴展規則即可
也可采用繼承的方法
   
   
   
           
  1. $.extend($.validationEngineLanguage.allRules,{
  2. switch:{
  3. "func": function(field,rules,i,options){
  4. if(!$(field).val()){
  5. return false;
  6. }
  7. return true;
  8. },
  9. "alertText": "* 請選擇內容"
  10. }
  11. });

注意如果使用框架自帶的ajax驗證 后台代碼返回

   
   
   
           
  1. @RequestMapping("/vaild/lookhousename")
  2. @ResponseBody
  3. public Object vaildLookHouseName()throws Exception{
  4. String fieldId = RequestUtil.getRequestParameter("fieldId");
  5. String fieldValue = RequestUtil.getRequestParameter("fieldValue");
  6. String backstr = RequestUtil.getRequestParameter("backstr");
  7. Object[] ret = null;
  8. try {
  9. if(backstr.equalsIgnoreCase(fieldValue)){
  10. ret = new Object[]{fieldId,true};
  11. }else{
  12. if(nhousegroupdefService.hasLookHouseName(fieldValue)){
  13. ret = new Object[]{fieldId,false};
  14. }else{
  15. ret = new Object[]{fieldId,true};
  16. }
  17. }
  18. }catch (Exception e){
  19. e.printStackTrace();
  20. logger.error(e.getMessage(), e);
  21. }
  22. return ret;
  23. }



2..使用$('#id').validationEngine('validate')的方法 , 由於使用自帶的ajax需要動態傳入兩個參數的話


ps:不使用原框架對ajax自定義驗證的時候
1. 如果要跟框架一樣提示的風格,成功就要消除錯誤信息,如果要隱藏錯誤框,使用:$ ('#ysfyHouse').parent().find("div[class=formError]").css({opacity: 0}) 並不會沖突的話設置透明度,原框架就是這么弄的 , 找遍了ajax不設置隱藏框的方法,都不合適 ,最后只能妥協加隱藏框,點保存的時候確認隱藏框的值

2.如果直接alert()的話 ,就只需要設置隱藏框就可以了


   
   
   
           
  1. $('#ysfyHouse').on('blur', function(){
  2. if(!$(this).val()||$('#ysfyHouse').validationEngine('validate')){ //必須等元素驗證完畢才能執行下一步
  3. return;
  4. }
  5. $.post((baseURL+'/housemanage/nhousegroupdef/vaild/lookhousejoin'),{houseid:($("#ysfyHouseid").val()),groupid:(page_exchange_moudel.id)},function(rec){
  6. if(rec.code == "0"){
  7. if(rec.data.result){
  8. $('#ysfyHouse').validationEngine('showPrompt','樓盤已重復,請修改!','error');
  9. $("#ysfyHouseidajaxval").val("1")
  10. }else{
  11. $('#ysfyHouse').validationEngine('showPrompt','成功!','pass');
  12. $("#ysfyHouseidajaxval").val("0")
  13. }
  14. }else{
  15. alert(rec.desc);
  16. }
  17. },"json").error(function(){
  18. alert("請求失敗!");
  19. });
  20. })




附件列表

     


    免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM