• 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. })




    附件列表

    • 相关阅读:
      LeetCode 301. Remove Invalid Parentheses
      LeetCode 126. Word Ladder II
      LeetCode 44. Wildcard Matching
      LeetCode 10. Regular Expression Matching
      LeetCode 65. Valid Number
      LeetCode 149. Max Points on a Line
      LeetCode 68. Text Justification
      LeetCode 212. Word Search II
      LeetCode 79. Word Search
      LeetCode 218. The Skyline Problem
    • 原文地址:https://www.cnblogs.com/signheart/p/6599854.html
    Copyright © 2020-2023  润新知