改写jquery.validate.unobtrusive.js实现气泡提示mvc错误
个人对于这个js、css不是很擅长,所以这个气泡提醒的样式网上找了下,用了这个http://www.cnblogs.com/wifi/articles/2918950.html当中的第一种写法。
对于mvc中默认的错误提示,是使用@Html.ValidationMessageFor这个来生成个<span class="field-validation-valid" data-valmsg-for="XXX" data-valmsg-replace="true"></span>这种的html标签,但是对于span首先它得占页面的空间,而且我需要它里面有字的时候才显示,没字的时候就得隐藏,css不好弄,所以就得改这个jquery.validate.unobtrusive.js来实现。
(当然mvc中错误提示还有@Html.ValidationSummary,不过这个我发现它都是页面回发的时候才会变化的,所以我可以在页面load出来的时候就能够判断到里面有没有文字,然后再去控制如何显示出来,这个实现起来就比较简单,也不用去改动源码啥的,这里就不提了。)
我改的jquery.validate.unobtrusive.js中的onerror方法:
1 function CPos(left, top) {
2 this.left = left;
3 this.top = top;
4 }
5
6 function GetObjPos(ATarget) {
7 var target = ATarget;
8 var pos = new CPos(target.offsetLeft, target.offsetTop);
9
10 var target = target.offsetParent;
11 while (target) {
12 pos.left += target.offsetLeft;
13 pos.top += target.offsetTop;
14
15 target = target.offsetParent
16 }
17 return pos;
18 }
function onError(error, inputElement) { // 'this' is the form element
var container = $(this).find("[data-valmsg-for='" + inputElement[0].name + "']"),
replace = $.parseJSON(container.attr("data-valmsg-replace")) !== false;
container.removeClass("field-validation-valid").addClass("field-validation-error");
error.data("unobtrusiveContainer", container);
var pos = GetObjPos(inputElement[0]);
28 if (error.text().length > 0) {
29 if ($("[popupfor='" + inputElement[0].name + "']").length == 0) {
30 $(document.body).append("<div class=\"poptip\" popupfor=\"" + inputElement[0].name + "\" style=\"top: " + (pos.top + inputElement.height()) + "px;left:" + pos.left + "px;\"><span class=\"poptip-arrow poptip-arrow-top\"><em>◆</em><i>◆</i></span>" + error.text() + "</div>");
31 }
32 else {
33 $("[popupfor='" + inputElement[0].name + "']").contents().filter(function () {
34 return this.nodeType == 3;
35 }).replaceWith(error.text());
36 }
37 $("div[popupfor='" + inputElement[0].name + "']").show();
38 }
39 else {
40 $("div[popupfor='" + inputElement[0].name + "']").hide();
41 }
if (replace) {
container.empty();
error.removeClass("input-validation-error").appendTo(container);
}
else {
error.hide();
}
}
红色的是我加的,代码比较简单。
然后cshtml中我使用了个隐藏的div,把这个@Html.ValidationMessageFor给包起来。
.hide {display:none;}
<div class="hide">@Html.ValidationMessageFor(model => model.XXX)</div>
效果图:

改写jquery.validate.unobtrusive.js实现气泡提示mvc错误的更多相关文章
- jquery.validate.unobtrusive.js实现气泡提示mvc错误
改写jquery.validate.unobtrusive.js实现气泡提示mvc错误 个人对于这个js.css不是很擅长,所以这个气泡提醒的样式网上找了下,用了这个http://www.cnblog ...
- MVC3.0修改jquery.validate.unobtrusive.js实现气泡提示mvc错误
CSS部分 <style type="text/css"> .hide {display:none;} .poptip { position: absolute; to ...
- jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证方式(jquery.validate.unobtrusive.js)
最近在学习asp.netMVC,发现其中的验证方式书写方便快捷,应用简单,易学好懂. 验证方式基于jQuery的validate 验证方式,也可以说是对jQuery validate的验证方式的扩展, ...
- .net MVC内置js验证 jquery.validate.unobtrusive.js重置验证操作(备忘,找了很多次了)
(function ($) { $.validator.unobtrusive.parseDynamicContent = function (selector) { //use the normal ...
- ASP.NET MVC异步验证是如何工作的03,jquery.validate.unobtrusive.js是如何工作的
在上一篇"ASP.NET MVC异步验证是如何工作的02,异步验证表单元素的创建"中了解了ASP.NET异步验证是如何创建表单元素的,本篇体验jquery.validate.uno ...
- jquery.validate.unobtrusive.js插件作用
在 ASP.NET MVC 中启用 Unobtrusive JavaScript 功能,可以在运行时由服务器端根据Model中设置的验证规则,自动生成客户端验证js代码(结合jquery.valida ...
- 360浏览器下jquery.validate.unobtrusive的日期验证问题
今天在招聘频道(job.cnblogs.com)遭遇这样一个问题——在360浏览器下,在一个表单验证中,虽然输入了有效的日期,却总是提示日期格式错误,见下图: 而在Chrome/Safari/Fire ...
- MVC的验证 jquery.validate.unobtrusive
jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证方式(jquery.validate.unobtrusive.js) 2013-07-22 19:07 4568人阅 ...
- MVC自定义验证 jquery.validate.unobtrusive
MVC的验证 jquery.validate.unobtrusive 阅读目录 一.应用 二.验证规则 1.一.简单规则 2.二.复杂一点的规则 3.三.再复杂一点的规则(正则) 4.四.再再复杂一点 ...
随机推荐
- 第五章 搭建 S3C6.410 开发板的 测试环境
一.简介: 对于嵌入式驱动开发者来说,你必须要了解什么是开发板:它与我们经常用的手机类似, 包含了显示屏. 键盘. Wi-Fi. 蓝牙等模块等,是开发者必备的硬件设备.但与手机不同的是:在开发板上安装 ...
- Android 学习第12课,应用出错信息
应用在运行时,出现的错误信息都会在LogCat中显示 如果调出LogCat ? 菜单:窗口 -> 显示视图 -> 其他 -> LogCat
- discuz不能发表投票、附件上传等
如何开启和发表投票主题 本教程主要讲述如何开启和发表投票的帖子.具体的操作如下: 1.论坛后台 => 用户 => 用户组 => 详情 => 特殊主题 => 允许发起投票设 ...
- Linux系统重启python程序
#! /usr/bin/env python #coding=utf-8 import sys import ConfigParser import urllib import urllib2 fro ...
- gulp基本用法
嗨,小伙伴们,大家周五好,又到了一周中最最最期待的周五啦啦~~~ 这几天一直在研究gulp的使用方法,今天抽时间来整理一下基本步骤. gulp 的使用流程: 安装nodejs ->安装git(方 ...
- TOJ3136
3136: Ubiquitous Religions 时间限制(普通/Java):2000M ...
- PHP常用数组函数介绍
array_splice() 删除数组中的指定元 array_splice(数组名,从前往后删的个数,new一个数组的大小);没有第三参数也就没有返数组,没有第三个参数时,第二个参数的意义为从前往后保 ...
- Oracle 数据库SQL性能查看
作为一个开发/测试人员,或多或少都得和数据库打交道,而对数据库的操作归根到底都是SQL语句,所有操作到最后都是操作数据,那么对sql性能的掌控又成了我们工作中一件非常重要的工作.下面简单介绍下一些查看 ...
- linux创建动态库
[1]新建源程序sharelib.c /************************************************************************* > F ...
- Linear Algebra lecture3 note
Matrix multiplication(4 ways!) Inverse of A Gauss-Jordan / find inverse of A Matrix multiplication ...