• 在jsp页面中设置了远程验证,在初始化时必须预先调用一次。


    参考链接:http://code.taobao.org/p/sztaotao/diff/5/trunk/code/src/main/webapp/webpage/modules/sys/roleForm.jsp

            在进行项目测试时,发现对设备管理模块进行“修改”时,没有任何反应(即没有“保存成功”的字样,控制台也不打印输出报错),后来在网上找资料,发现在进行“远程验证时,在初始化时必须预先调用一次”。因为当你打开修改对话框,不做任何更改直接submit,这时会触发远程效验,远程效验耗时较长,这时submit函数在等待远程效验结果然后在提交,而layer对话框不会阻塞(就是上面所说的没有任何反应),会直接关闭,同时会销毁表单,因此submit没有提交就被销毁了,导致提交表单失败。

    <script type="text/javascript">
    var validateForm;
    function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
    if(validateForm.form()){
    $("#inputForm").submit();
    return true;
    }

    return false;
    }
    $(document).ready(function() {
    validateForm = $("#inputForm").validate({
    rules: {
               //设置了远程验证,在初始化时必须预先调用一次。            
    code: {remote: "${ctx}/equip/equipment/checkEquipmentCode?oldEquipmentCode=${equipment.code}"},
             messages: {
    code: {remote: "该设备编码已经存在!"},
    },
    submitHandler: function(form){
    loading('正在提交,请稍等...');
    form.submit();
    },
    errorContainer: "#messageBox",
    errorPlacement: function(error, element) {
    $("#messageBox").text("输入有误,请先更正。");
    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
    error.appendTo(element.parent().parent());
    } else {
    error.insertAfter(element);
    }
    }
    });
    //在ready函数中预先调用一次远程校验函数,是一个无奈的回避案。(刘高峰)
    //否则打开修改对话框,不做任何更改直接submit,这时再触发远程校验,耗时较长,
    //submit函数在等待远程校验结果然后再提交,而layer对话框不会阻塞会直接关闭同时会销毁表单,因此submit没有提交就被销毁了导致提交表单失败。
    //inputForm 为提交表单的id
    $("#inputForm").validate().element($("#code"));
       });
    </script>
  • 相关阅读:
    get 方式获取ajax
    javascript 面试题目
    原生js 制作选项卡切换效果
    js 回到顶部效果
    php mysql
    浏览器高度 clientHeight 与scrollHeight offsetHeight
    js dom中删除子节点removeChild
    Javascript综合笔记
    Ka贪心大暴走
    Openjudge NOI题库 ch0111/t1794 集合加法
  • 原文地址:https://www.cnblogs.com/kelly-one/p/8378445.html
Copyright © 2020-2023  润新知