dwz中的表单回调函数大概有下面几种:


/*** 普通ajax表单提交* @param {Object} form* @param {Object} callback* @param {String} confirmMsg 提示确认信息*/
function validateCallback(form, callback, confirmMsg) {var $form = $(form);if (!$form.valid()) {return false;}var _submitFn = function(){$.ajax({type: form.method || 'POST',url:$form.attr("action"),data:$form.serializeArray(),dataType:"json",cache: false,success: callback || DWZ.ajaxDone,error: DWZ.ajaxError});}if (confirmMsg) {alertMsg.confirm(confirmMsg, {okCall: _submitFn});} else {_submitFn();}return false;
}
/*** 带文件上传的ajax表单提交* @param {Object} form* @param {Object} callback*/
function iframeCallback(form, callback){var $form = $(form), $iframe = $("#callbackframe");if(!$form.valid()) {return false;}if ($iframe.size() == 0) {$iframe = $("<iframe id='callbackframe' name='callbackframe' src='about:blank' style='display:none'></iframe>").appendTo("body");}if(!form.ajax) {$form.append('<input type="hidden" name="ajax" value="1" />');}form.target = "callbackframe";_iframeResponse($iframe[0], callback || DWZ.ajaxDone);
}
function _iframeResponse(iframe, callback){var $iframe = $(iframe), $document = $(document);$document.trigger("ajaxStart");$iframe.bind("load", function(event){$iframe.unbind("load");$document.trigger("ajaxStop");if (iframe.src == "javascript:'%3Chtml%3E%3C/html%3E';" || // For Safariiframe.src == "javascript:'<html></html>';") { // For FF, IEreturn;}var doc = iframe.contentDocument || iframe.document;// fixing Opera 9.26,10.00if (doc.readyState && doc.readyState != 'complete') return; // fixing Opera 9.64if (doc.body && doc.body.innerHTML == "false") return;var response;if (doc.XMLDocument) {// response is a xml document Internet Explorer propertyresponse = doc.XMLDocument;} else if (doc.body){try{response = $iframe.contents().find("body").text();response = jQuery.parseJSON(response);} catch (e){ // response is html document or plain textresponse = doc.body.innerHTML;}} else {// response is a xml documentresponse = doc;}callback(response);});
}/*** navTabAjaxDone是DWZ框架中提前定义的表单提交回调函数.* server转回navTabId能够把那个navTab标记为reloadFlag=1, 下次切换到那个navTab时会又一次加载内容. * callbackType假设是closeCurrent就会关闭当前tab* 仅仅有callbackType="forward"时须要forwardUrl值* navTabAjaxDone这个回调函数基本能够通用了,假设还有特殊须要也能够自己定义回调函数.* 假设表单提交仅仅提示操作是否成功, 就能够不指定回调函数. 框架会默认调用DWZ.ajaxDone()* <form action="/user.do?

method=save" οnsubmit="return validateCallback(this, navTabAjaxDone)"> * * form提交后返回json数据结构statusCode=DWZ.statusCode.ok表示操作成功, 做页面跳转等操作. statusCode=DWZ.statusCode.error表示操作失败, 提示错误原因. * statusCode=DWZ.statusCode.timeout表示session超时,下次点击时跳转到DWZ.loginUrl * {"statusCode":"200", "message":"操作成功", "navTabId":"navNewsLi", "forwardUrl":"", "callbackType":"closeCurrent", "rel"."xxxId"} * {"statusCode":"300", "message":"操作失败"} * {"statusCode":"301", "message":"会话超时"} * */ function navTabAjaxDone(json){ DWZ.ajaxDone(json); if (json.statusCode == DWZ.statusCode.ok){ if (json.navTabId){ //把指定navTab页面标记为须要“又一次加载”。注意navTabId不能是当前navTab页面的 navTab.reloadFlag(json.navTabId); } else { //又一次加载当前navTab页面 var $pagerForm = $("#pagerForm", navTab.getCurrentPanel()); var args = $pagerForm.size()>0 ? $pagerForm.serializeArray() : {} navTabPageBreak(args, json.rel); } if ("closeCurrent" == json.callbackType) { setTimeout(function(){navTab.closeCurrentTab(json.navTabId);}, 100); } else if ("forward" == json.callbackType) { navTab.reload(json.forwardUrl); } else if ("forwardConfirm" == json.callbackType) { alertMsg.confirm(json.confirmMsg || DWZ.msg("forwardConfirmMsg"), { okCall: function(){ navTab.reload(json.forwardUrl); }, cancelCall: function(){ navTab.closeCurrentTab(json.navTabId); } }); } else { navTab.getCurrentPanel().find(":input[initValue]").each(function(){ var initVal = $(this).attr("initValue"); $(this).val(initVal); }); } } } /** * dialog上的表单提交回调函数 * server转回navTabId。能够又一次加载指定的navTab. statusCode=DWZ.statusCode.ok表示操作成功, 自己主动关闭当前dialog * * form提交后返回json数据结构,json格式和navTabAjaxDone一致 */ function dialogAjaxDone(json){ DWZ.ajaxDone(json); if (json.statusCode == DWZ.statusCode.ok){ if (json.navTabId){ navTab.reload(json.forwardUrl, {navTabId: json.navTabId}); } else if (json.rel) { var $pagerForm = $("#pagerForm", navTab.getCurrentPanel()); var args = $pagerForm.size()>0 ? $pagerForm.serializeArray() : {} navTabPageBreak(args, json.rel); } if ("closeCurrent" == json.callbackType) { $.pdialog.closeCurrent(); } } } /** * 处理navTab上的查询, 会又一次加载当前navTab * @param {Object} form */ function navTabSearch(form, navTabId){ var $form = $(form); if (form[DWZ.pageInfo.pageNum]) form[DWZ.pageInfo.pageNum].value = 1; navTab.reload($form.attr('action'), {data: $form.serializeArray(), navTabId:navTabId}); return false; } /** * 处理dialog弹出层上的查询, 会又一次加载当前dialog * @param {Object} form */ function dialogSearch(form){ var $form = $(form); if (form[DWZ.pageInfo.pageNum]) form[DWZ.pageInfo.pageNum].value = 1; $.pdialog.reload($form.attr('action'), {data: $form.serializeArray()}); return false; } function dwzSearch(form, targetType){ if (targetType == "dialog") dialogSearch(form); else navTabSearch(form); return false; } /** * 处理div上的局部查询, 会又一次加载指定div * @param {Object} form */ function divSearch(form, rel){ var $form = $(form); if (form[DWZ.pageInfo.pageNum]) form[DWZ.pageInfo.pageNum].value = 1; if (rel) { var $box = $("#" + rel); $box.ajaxUrl({ type:"POST", url:$form.attr("action"), data: $form.serializeArray(), callback:function(){ $box.find("[layoutH]").layoutH(); } }); } return false; }

用法曾经两个为例:

form一般用this取代。callback指的是回调函数。能够自己定义,在js里面写一个callback(json)方法,回调时会调用,confirmMsg显示提示信息。

下面是我写的iframeCallback(form, callback)带文件上传的样例,可供參考:

<form id="canshuwwwwww" method="post" action="<%=basePath %>/sdsc/job/jobparamcreate" enctype="multipart/form-data" class="pageForm required-validate" οnsubmit="return iframeCallback(this,callback);" > <!-- οnsubmit="return iframeCallback(this);" return validateCallback(this,ajaxDone2); --><table style="line-height:20px;margin-left:20px;"><!-- input禁止输入 --><tr><td><label>选择參数:</label>   <input id="softparamid" name="softwareparam.id" value="" type="hidden"/><td><input id="softname" class="required" name="softwareparam.name" type="text" readonly="readonly" style="width:220px;" disabled="disabled"/><td><strong><a id="find" href="" style="float:left;" class="btnLook" lookupgroup="softwareparam" title="选择软件參数" width="400"  >查找带回</a></strong><tr><td><label>參数值:</label><td><input id="paramvalue" type="text" name="paramvalue" class="required" size="20" maxlength="32" style="width:220px;" disabled="disabled"/><tr><td><label>文件:</label><td><input id="uploadfile" name="uploadfile" type="file" /><input id="softwareid" name="softwareid" value="" type="hidden"/><input id="jobinfoid" name="jobinfoid" value="" type="hidden"/><td><div class="buttonActive"><div class="buttonContent"><button type="submit" >确定</button></div></div></table></form>
function callback(json){//alert(json.id);//提交參数的回调函数//表格加入一行newRow=document.all.yltable.insertRow(-1); j_1++;newRow.id=json.id;newcell=newRow.insertCell(); newcell.className="cell";//newRow.bgColor='#FFFFFF'; newcell.align='center'; //newcell.innerHTML="";newcell.innerHTML="第"+j_1+"行";newcell=newRow.insertCell(); //newRow.bgColor='#FFFFFF';newcell.className="cell";newcell.align='center'; newcell.innerHTML=json.paramname;newcell=newRow.insertCell() ; //newRow.bgColor='#FFFFFF';newcell.className="cell";newcell.align='center';//alert(document.getElementById("aaaaa"))//newcell.innerHTML='<input name="button3" type="button" onClick="delrow1()" value="删除1"> <input name="button3" type="button" onClick="delrow2()" value="删除2">';newcell.innerHTML=json.paramvalue;newcell=newRow.insertCell() ; //newRow.bgColor='#FFFFFF';newcell.className="cell";newcell.align='center';//newcell.innerHTML='<shiro:hasPermission name="dojob:delete"><a class="delete" target="ajaxTodo" href="/workbench/sdsc/job/jobparamdelete/'+json.id+'" title="确认要删除该參数?"><span>删除</span></a></shiro:hasPermission>';newcell.innerHTML='<a title="确认要删除该參数?" onClick="submit('+json.id+')"><span>删除</span></a>';document.all.yltable.focus();}function submit(a){$.ajax({url : "/workbench/sdsc/job/jobparamdelete/"+a,data : {},type:"post",dataType : 'json',success : function(data) {var table = document.getElementById('yltable');document.getElementById(a).parentNode.removeChild(document.getElementById(a));},error : function() {alert("失败");}});}

转载于:https://www.cnblogs.com/zfyouxi/p/5132298.html

dwz框架---(2)表单回调函数相关推荐

  1. DWZ的Ajax表单

     Ajax表单 Ajax表单相关的操作封装在dwz.ajax.js中.表单查询.分页.表单提交js方法都已经封装在里面了.开发人员自己不需写js,按标准使用就可以了. 表单查询 DWZ中定义表单查询和 ...

  2. DWZ (JUI) 教程 表单提交重定向问题

    DWZ  (JUI)  教程  表单提交重定向问题 最近有朋友问表单提交后navTab重定向的问题,其实非常简单我简单说明一下. dwz 中提供了 简单 navTabAjaxDone 回调函数 在fo ...

  3. JavaScript - JavaScript通用表单验证函数(实例)

    Check.js    JS函数文件 /* *--------------- 客户端表单通用验证CheckForm(oForm) ----------------- * 功能:通用验证所有的表单元素. ...

  4. JS通用表单验证函数

    Check.js   JS函数文件 /*  *--------------- 客户端表单通用验证CheckForm(oForm) -----------------  * 功能:通用验证所有的表单元素 ...

  5. 通用客户端表单验证函数修正版

    转载:PHPSOHO 通用客户端表单验证函数修正版 主要内容: 一.用法简介: 二.类型定义: 三.程序文件: 历史: 2005.2.25 修改为通用客户端表单验证函数修正版 2004.12.21  ...

  6. php 表单校验函数库(判断email格式是否正确、http地址是否合法有效、手机号码是否合法)...

    /*** 表单校验函数库*//*** 判断email格式是否正确* @param $email*/ function is_email($email) {return strlen($email) & ...

  7. js进阶 14-8 表单序列化函数serializeArray()和serialize()的区别是什么

    js进阶 14-8 表单序列化函数serializeArray()和serialize()的区别是什么 一.总结 一句话总结:两者都是对表单进行序列化,serializeArray()返回的是json ...

  8. 框架详解_详解:python Web框架flask表单实现(建议收藏)

    今天为大家带来的内容是:python框架flask表单实现详解 文章内容主要介绍了python框架flask表单实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需 ...

  9. 通用客户端表单验证函数修正版(zz)

    通用客户端表单验证函数修正版 主要内容: 一.用法简介: 二.类型定义: 三.程序文件: 历史: 2005.2.25  修改为通用客户端表单验证函数修正版 2004.12.21     1.对整数的范 ...

最新文章

  1. Android, BaseAdapter 处理大数据量时的优化
  2. win10分辨率不能调整_图文介绍win10系统使用hdmi连接电视的处理方法
  3. java的数组是对象吗_在Java中数组是原始类型还是对象?
  4. Pywinauto自动化操作PC微信提取好友微信号
  5. 跨域调用报表展现页面的flash打印方法
  6. Py之Numpy:Numpy库中常用函数的简介、应用之详细攻略
  7. kafka自带没web ui界面,怎么办?安装个第三方的
  8. ll微信2下载安装_【兰苑文学】:陈振 ll黄金槐
  9. 【POJ】3255 Roadblocks(次短路+spfa)
  10. Python 扩展知识:编程习惯
  11. 电脑基本快捷键,你知道多少?
  12. Hyperion Essbase入门(五)SmartView
  13. 常用股票软件linux,在 Linux 下看股票?
  14. 星舆科技北斗高精度定位网启动北斗三号服务
  15. Q3净利润同比涨超313%,金山办公为何不能松懈?
  16. 方便面又好卖了!康师傅天猫618狂增10倍,还说这只是起点
  17. 麒麟子Cocos Creator实用技巧九:棋牌UI全分辨率适配方案
  18. 伪静态与重定向--RewriteBase
  19. 如何推广APP软件?
  20. 使用c#建立奥运奖牌榜

热门文章

  1. linux配置路径,Linux下配置搜索路径
  2. recurdyn和matlab联合仿真,基于RecurDyn与Simulink的液压破碎锤联合仿真与试验分析
  3. Python数据结构与算法(1.7)——算法分析
  4. 深度学习常用性能评价指标
  5. linux mysql 每天备份_Linux下Mysql每天自动备份
  6. proguard 反编译_Android Studio项目结构,编译器,ProGuard
  7. 适配器模式的极简概述
  8. vue中动态添加组件
  9. Spring boot 2.0 with Oauth2 + Jwt
  10. WEB应用安全解决方案测试验证