




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
今天我们就谈如何用JQuery+MVC来处理表单的提交。想达到的效果: 1、提交前的表单验证 2、表单验证 3、提交后的反馈信息ok,先说一下工作的原理。前台,action指定了接受表单的处理页面。method这里我们只说post如果用ajax提交表单,自然xxx.aspx便是请求的url。ajax请求后的callback便是响应表单的提交结果(错误、成功),我们提交的反馈信息用一个 浮层(lightbox)来表示。 不至于用 alert(); 这样铛铛铛很囧。我们引入一个Jquery的插件/jquery/form/#api这是一个略有名气的插件,方便易用。关于其用法,大家可以搜索下。那么我们需要做的就是1、jquery.form.js的使用2、lightbox的实现3、如何验证代码 $.fn.submitForm = function(args) var url, id, callback, before; id = this.attr(id); if (typeof (args) = string) url = args; before = undefined; callback = undefined; else args = args | new Object(); url = args.url | this.attr(action); if (typeof (args) = function) callback = args; else before = args.before; callback = args.callback; /输入验证 this.inputValidate(); /form没有url 则是伪提交 if (url = undefined | url = ) $(# + id).submit(function() if ($(# + id).submitValidate() = false) return false; /验证成功就执行callback callback(); ); else this.ajaxForm( url: url, beforeSubmit: function(a, f, o) /提交验证 if ($(# + id).submitValidate() = false) return false; if (before != undefined & before() = false) return false; o.dataType = json; , success: function(data) if (data = | data = null) return false; $(#myMsg).showMsg(data, callback); return false; ); return this; ;上面的方法很简单,就是form插件的使用,还有几个我们需要实现的方法。(inputValidate,submitValiedate,ajaxMsg)既然是ajax提交,我们则需要给客户端一个反馈信息,然后用Lightbox呈现。一:我们定义一个JsonMessage类publicclassJsonMessagepublicintresultget;set;/0错误1正确2提示3警告publicstringtitleget;set;/Lightbox窗口的标题publicstringcontentget;set;/message的具体内容publicstringredirectget;set;/弹出后自动跳转的到哪里?publicobjectcallBackDataget;set;/客户端需要的数据 比如 一个新增的id或整个modelMVC返回Json(jsonmsg1),客户端的callback便可以得到这个对象的json格式。(注意:如果是附件的表单提交,则不能识别JsonResult格式。具体我还没有研究怎么回事,这种情况只能response一个json字符串,可以用System.Web.Script.Serialization.JavaScriptSerializer来序列化对象,也很方便。)二:我们写一个ajaxMsg来实现lightbox,这是我自己写的Lightbox,比较简陋,如果不喜欢,也可以用一些知名的插件。代码 (function($) $.fn.showMsg = function(model, callback, fail) var me = this; if (me.length = 0) $(body).append(); $(me.selector).showMsg(model, callback); return; if (model = undefined) return; model.content = model.result = 1 & model.content = undefined ? 操作成功! : model.content; me.html(model.content); me.removeClass().addClass(message_ + model.result).show(100); if (model.result1 = 1 & fail != undefined) fail(model); if (model.result = 1 & callback != undefined) callback(model); setTimeout(function() if (me.css(display) != none) me.hide(100); , 3000); return me; )(jQuery);Ajax消息的样式完全可以用CSS来做,包括div的定位都可以在css里写js代码来实现。不知道有没有人能理解我这里的callback,我说一下他的用到的情况。 实际应用中我还有一个ajaxWin来实现弹窗,弹窗里的表单提交后一般需要关闭弹窗,然后更新一些数据(比如刷新列表)。这时就需要 submit后的callback动作。另外就是我目前还有使用到redirect这个属性。呵呵,我之前的系统需要大量的跳转处理,这些跳转也是无刷新的,有一个数组来记录访问的地址。可以实现后退和前进。三:好了,Lightbox已经实现了,也能show出各种类型的信息了。下面还剩下表单验证。 其实表单验证大有文章可做。我这也不能一一做到。目前只做了些简单的验证。以后会实现比较复杂的错误提示效果。其实这都是 体力活,上面没要求我也懒的弄-。-验证我采用的是给control一些自定义属性,然后再判断其值是否合法。代码 /输入验证 $.fn.inputValidate = function() $(input,select,textarea, this).each(function() var me = $(this); var isnull = me.attr(isnull) | 1; var dvalue = me.attr(dvalue); me.focus(function() if (this.value = ) $(this).inputRemove(); ); me.keyup(function() if (this.value = ) $(this).inputRemove(); ); /非空检查 if (isnull = 0) me.blur(function() if ($(this).val() = | $(this).val() = dvalue) $(this).inputError(此项必须填写!); else $(this).inputRight(); ); /正则注册onchange事件 var regexValue = me.attr(regex); if (regexValue != undefined) var thisValue = me.val(); me.blur(function() var re = new RegExp(regexValue, ig); if (this.value != & !re.test(this.value) me.inputError(格式不正确!); return result = false; else me.inputRight(); ); /最小长度 var minLength = me.attr(minlength) | 0; if (minLength != undefined) minLength = parseInt(minLength); me.blur(function() if (me.val() != null) if (me.val().length minLength) me.inputError(长度不能小于 + minLength); ); /其他 ); ; /提交验证 $.fn.submitValidate = function() var result = true; $(input:visible,select:visible,textarea:visible, this).each(function() var me = $(this); var thisValue = ; if (me.attr(type) = radio | me.attr(type) = checkbox) thisValue = $(inputname= + + :checked).val(); else thisValue = me.val(); /判断是否违法 / 是否必填 且不能为空或缺省值 if (me.attr(isnull) = 0) if (thisValue = | (thisValue != & thisValue = me.attr(dvalue) me.inputError(此项必须填写!); return result = false; else me.inputRight(); / 是否符合格式 属性为 regex 正则 if (thisValue != ) var reValue = $(this).attr(regex); if (reValue != undefined) re = new RegExp(reValue, ig); if (!re.test(thisValue) me.inputError(格式不正确!); return result = false; else me.inputRight(); ); return result; ; $.fn.inputError = function(msg) this.inputRemove(); /this.focus(); $(span, this.parent().hide(); this.parent().addClass(focus).append( + (msg | ) + ); $.fn.inputRight = function(msg) this.inputRemove(); /this.focus(); $(span, this.parent().hide(); this.parent().addClass(focus).append( + (msg | ) + ); $.fn.inputRemove = function() this.removeClass(focus); $(.r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 驿站施工方案范例50篇
- 中央空调维修保养合同模板示范
- 民居防潮措施方案范本
- 使用吊车施工方案怎么写
- 期货从业考试合格证验证及答案解析
- 人力资源信息化项目汇报
- 竖弯钩的教学课件
- 车间生产效率提升培训方案
- 下一步工作总结幼儿园
- 运行人员安全培训记录课件
- 2025年超细氢氧化铝行业研究报告及未来行业发展趋势预测
- 2025-2026学年人美版(2024)小学美术二年级上册(全册)教学设计(附目录P188)
- 2025年高考(新课标Ⅱ卷)英语试题及答案
- 电子元器件供货方案与保证措施
- 2025便利店便利店员工劳动合同范本
- 小学二年级体育教案全集全册1
- 2025秋八年级上册道德与法治新教材全册知识点提纲
- 2024年北京人民艺术剧院招聘笔试真题
- 军事仿真演练系统设计
- 2025年江苏省档案初级职称考试(档案业务基础知识)历年参考题库含答案详解(5卷)
- 医院反恐知识培训课件
评论
0/150
提交评论