黑马程序员技术交流社区
标题:
jquery自写的一个验证机制
[打印本页]
作者:
sunrise2
时间:
2014-8-11 09:22
标题:
jquery自写的一个验证机制
不用mvc自带的验证机制,用jquery自写的一个验证机制,例代码以一个登陆界面为例
登录页面
@{
ViewBag.Title = "Login";
Layout = "~/Views/Login/_Layout.cshtml";
}
@model LoginModel
@section BodyScript{
<script src="http://image.baiboom.com/js/jquery.validate.js" type="text/javascript"></script>
}
@section HeadStyle{
}
<div class="login_main">
<div class="row-fluid">
<div class="span12">
<form action="@Request.Url.ToString()" id="loginForm" method="post">
<div>
@if (ViewData["SuccessMsg"] == null)
{
@Html.ValidationSummary(false, null, new { @class = "alert alert-error" })
}
else
{
<div class="alert alert-info">
<h4 class="alert-heading">@ViewData["SuccessMsg"]</h4>
</div>
}
@Html.AntiForgeryToken()
</div>
<div>
<input class="span12" id="loginName" name="loginName" placeholder="邮箱/手机号码/百步ID"
type="text" value="@Model.loginName" />
<div class="help-block">
<span data-valmsg-for="loginName"></span>
</div>
</div>
<div>
<input class="span12" id="password" name="password" placeholder="密码" type="password" />
<div class="help-block">
<span class="field-validation-valid" data-valmsg-for="password"></span>
</div>
</div>
<div>
<label class="checkbox inline" id="labRememberMe">
<input onclick="this.value=this.checked" name="rememberMe" type="checkbox" />一周内自动登录
</label>
</div>
<div>
<input type="submit" value="立即登录" class="btn btn-success btn-tremendous" />
<label class="checkbox inline">
<a href="/account/ForgetPwd">忘记密码?</a>
</label>
</div>
</form>
</div>
</div>
<span>用其他帐户登录:<a class="btn btn-mini">QQ</a> <a class="btn btn-mini">新浪微博</a></span>
</div>
@section Script{
<script type="text/javascript">
$(function () {
jQuery.validator.addMethod("regex", function (value, element, param) {
var tel = new RegExp(param);
return (tel.test(value));
}, $.validator.format("验证Regex{0}!"));
// jQuery.validator.addMethod("customLoginName", function (value, element, param) {
// var re = new RegExp("(^1[3|4|5|8]\d{9}$)|(^[1-9][0-9]{6,9}$)");
// return re.test(value);
// }, $.validator.format("自定义验证{0}!"));
$("#loginName").tooltip({ title: "[用户名]必须为(邮箱、手机号码或百步ID)", delay: { show: 0, hide: 200} });
$("#password").tooltip({ title: "[密码]只能输入6~22数字或字母或特殊字符(~!@@#$%^&*.)", delay: { show: 0, hide: 200} });
$("#labRememberMe").tooltip({ title: "记住密码7天" });
$("#loginForm").validate({
onkeyup: false,
rules: {
loginName: {
required: true,
regex: "(^1[3|4|5|8]{1}[0-9]{9}$)|(^[1-9][0-9]{6,9}$)|(([.a-zA-Z0-9_-]){2,10}@@([a-zA-Z0-9_-]){2,10}(.([a-zA-Z0-9]){2,}){1,4})"
},
password: {
required: true,
regex: "^[0-9a-zA-Z~!@@#$%^&*.]{6,22}[ DISCUZ_CODE_0 ]quot;
}
},
messages: {
loginName: {
required: "请输入用户名",
regex: "[用户账号]格式不正确"
},
password: {
required: "请输入密码",
regex: "[密码]只能输入6~22数字或字母或特殊字符(~!@@#$%^&*.)"
}
},
errorClass: "validation-error",
errorElement: "span",
errorPlacement: function (error, element) {
var p = $(element).parent().find('[data-valmsg-for="' + $(element).attr("name") + '"]:eq(0)');
error.appendTo(p);
},
validClass: "validation-success",
successClass: "validation-success",
success: function (success, element) {
var a = $(element);
var name = a.attr("name");
var p = a.parent().find('[data-valmsg-for="' + name + '"]:eq(0)');
success.html("验证通过");
success.addClass("validation-error validation-success");
success.appendTo(p);
}
});
});
</script>
}
复制代码
LoginModel
public class LoginModel
{
public LoginModel()
{
}
[Required(ErrorMessage = "[用户账号]必填")]
[RegularExpression(@"(^1[3|4|5|8]{1}[0-9]{9}$)|(^[1-9][0-9]{6,9}$)|(([.a-zA-Z0-9_-]){2,10}@([a-zA-Z0-9_-]){2,10}(.([a-zA-Z0-9]){2,}){1,4})", ErrorMessage = "[用户账号]格式不正确")]
public string loginName { get; set; }
[Required(ErrorMessage = "[用户密码]必填")]
[DataType(DataType.Password)]
[Display(Name = "用户密码:", Description = "[用户密码]只能输入6~22数字或字母或特殊字符(~!@#$%^&*.)")]
[RegularExpression("^[0-9a-zA-Z~!@#$%^&*.]{6,22}[ DISCUZ_CODE_1 ]quot;, ErrorMessage = "[用户密码]格式不正确")]
public string password { get; set; }
[Display(Name = "记住我", Description = "记住用户7天")]
public bool rememberMe { get; set; }
public string returnURL { get; set; }
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2