• .NET MVC第七章、jQuery插件验证


    .NET MVC第七章、jQuery插件验证


    目录

    .NET MVC第七章、jQuery插件验证

    环境引入

    MVC使用script脚本

    示例

    效果

    可复制使用案例

     注:


    环境引入

    基础jQuery,这个在MVC项目内是自带的。

    <script src="https://code.jquery.com/jquery-3.4.0.min.js">script>

    验证js,MVC里是没有默认引入的,需要人为的主动引入。

    1. <script src="~/Scripts/jQuery.validate.js">script>
    2. <script src="~/Scripts/jQuery.metadata.js">script>
    3. <script src="~/Scripts/jQuery.validate.messages_cn.js">script>

    如果是VS2019需要引入一下几个包

    1. <script src="~/Scripts/jquery.validate.js">script>
    2. <script src="~/Scripts/jquery.validate.min.js">script>
    3. <script src="~/Scripts/jquery.validate.unobtrusive.js">script>
    4. <script src="~/Scripts/jquery.validate.unobtrusive.min.js">script>

    如果是VS2019在创建的过程中自带这些内容,VS2017则会少一些,例如jQuery是1.0版本的,也会有验证功能的js。 

    MVC使用script脚本

    MVC中由于母版页中已经引入了jQuery故而直接使用即可,但是这里需要使用@section Scripts来写入script的脚本信息。 

    1. @section Scripts{
    2. <script type="text/javascript">
    3. script>
    4. }

    示例

    视图层

    1. @{
    2. ViewBag.Title = "Index";
    3. }
    4. <h2>jQuery验证h2>
    5. <hr />
    6. <form action="~/Test/Index" method="get" id="form_test">
    7. <p>
    8. 用户名:<input type="text" name="userName" placeholder="请输入用户名" />
    9. p>
    10. <p>
    11. 密码:<input type="text" name="pwd1" id="pwd1" placeholder="请输入用户密码" />
    12. p>
    13. <p>
    14. 确认密码:<input type="text" name="pwd2" placeholder="请输入用户密码" />
    15. p>
    16. <input type="submit" value="提交" />
    17. form>
    18. @ViewBag.Info
    19. @section Scripts{
    20. <script src="~/Scripts/jquery.validate.js">script>
    21. <script src="~/Scripts/jquery.validate.min.js">script>
    22. <script src="~/Scripts/jquery.validate.unobtrusive.js">script>
    23. <script src="~/Scripts/jquery.validate.unobtrusive.min.js">script>
    24. <script type="text/javascript">
    25. $(function () {
    26. $("#form_test").validate({
    27. rules: {
    28. userName: { required: true },// 用户名非空
    29. pwd1: { required: true },// 密码非空
    30. pwd2: { required: true, equalTo: "#pwd1" }// 确认密码非空,是否和密码一致
    31. }, messages: {
    32. userName: { required: "请输入用户名!!" },
    33. pwd1: { required: "请输入密码!" },
    34. pwd2: {
    35. required: "请输入确认密码!",
    36. equalTo: "两次密码输入的不一致!"
    37. },
    38. }
    39. });
    40. });
    41. script>
    42. }

    控制器

    1. public ActionResult Index(string userName,string pwd1)
    2. {
    3. ViewBag.userName = userName;
    4. ViewBag.pwd = pwd1;
    5. ViewBag.Info = userName + ":" + pwd1;
    6. return View();
    7. }

    效果

    所有信息不允许为空

    两次密码不同 

    正确输入

    提交成功

    可复制使用案例

    为了让表单结构简单而清晰,我们将表单的每个元素都包裹在一个div结构中:用label标签用来标记元素的名称,接着便是表单元素本身。

    注明:

    1.使用label标签的好处是为鼠标用户改进了可用性。当在label元素内点击文本时,浏览器就会自动将焦点转到和label相关的表单控件上。

    2.每个需要校验的表单元素都应该设置id和name属性,方便在使用插件时将元素绑定校验规则和校验信息。】

    源码

    1. @{
    2. ViewBag.Title = "Index";
    3. }
    4. <h2>jQuery验证h2>
    5. <hr />
    6. HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    7. <html>
    8. <head>
    9. <title>jquery validate验证title>
    10. @section Scripts{
    11. <script src="~/Scripts/jquery.validate.js">script>
    12. <script src="~/Scripts/jquery.validate.min.js">script>
    13. <script src="~/Scripts/jquery.validate.unobtrusive.js">script>
    14. <script src="~/Scripts/jquery.validate.unobtrusive.min.js">script>
    15. <script type="text/javascript">
    16. $(function () {
    17. //让当前表单调用validate方法,实现表单验证功能
    18. $("#ff").validate({
    19. debug: true, //调试模式,即使验证成功也不会跳转到目标页面
    20. rules: { //配置验证规则,key就是被验证的dom对象,value就是调用验证的方法(也是json格式)
    21. sname: {
    22. required: true, //必填。如果验证方法不需要参数,则配置为true
    23. rangelength: [4, 12],
    24. remote: {
    25. url: "ajax_check.action",
    26. type: "post"
    27. }
    28. },
    29. spass: {
    30. required: true,
    31. rangelength: [6, 16]
    32. },
    33. spass2: {
    34. required: true,
    35. equalTo: '#password' //表示和id="spass"的值相同
    36. },
    37. saddress: {
    38. required: true
    39. },
    40. sphone: {
    41. required: true,
    42. phone: true
    43. },
    44. slike: {
    45. required: true,
    46. },
    47. semail: {
    48. required: true,
    49. email: true
    50. },
    51. simage: {
    52. required: true,
    53. extension: 'gif|jpe?g|png'
    54. }
    55. },
    56. messages: {
    57. sname: {
    58. required: "请输入用户名",
    59. rangelength: $.validator.format("用户名长度为{0}-{1}个字符"),
    60. remote: "该用户名已存在!"
    61. },
    62. spass: {
    63. required: "请输入密码",
    64. rangelength: $.validator.format("密码长度为{0}-{1}个字符")
    65. },
    66. spass2: {
    67. required: "请再次输入密码",
    68. equalTo: "两次密码必须一致" //表示和id="spass"的值相同
    69. },
    70. sphone: {
    71. required: "请输入手机号"
    72. },
    73. saddress: {
    74. required: "请选择地址"
    75. },
    76. slike: {
    77. required: "请选择爱好",
    78. },
    79. semail: {
    80. required: "请填写邮件",
    81. email: "邮箱格式不正确"
    82. },
    83. simage: {
    84. required: "请选择要上传的头像",
    85. extension: "文件后缀名必须为jpg,jpeg,gif,png"
    86. }
    87. }
    88. });
    89. });
    90. script>
    91. }
    92. head>
    93. <body>
    94. <form action="http://www.hao123.com" method="post" id="ff">
    95. <fieldset>
    96. <legend>jQuery-Validate表单校验验证legend>
    97. <div class="item">
    98. <label for="username" class="item-label">用户名:label>
    99. <input type="text" id="username" name="sname" class="item-text" placeholder="设置用户名"
    100. autocomplete="off" tip="请输入用户名">
    101. div>
    102. <div class="item">
    103. <label for="password" class="item-label">密码:label>
    104. <input type="password" id="password" name="spass" class="item-text"
    105. placeholder="设置密码" tip="长度为6-16个字符">
    106. div>
    107. <div class="item">
    108. <label for="password" class="item-label">确认密码:label>
    109. <input type="password" name="spass2" class="item-text" placeholder="设置确认密码">
    110. div>
    111. <div class="item">
    112. <label for="phone" class="item-label">手机号码:label>
    113. <input type="text" id="phone" name="sphone" class="item-text" placeholder="输入手机号码" tip="请输入手机号码">
    114. div>
    115. <div class="item">
    116. <label for="saddress" class="item-label">所在地:label>
    117. <select name="saddress" class="item-select">
    118. <option value="">---请选择---option>
    119. <option value="北京">北京option>
    120. <option value="上海">上海option>
    121. <option value="深圳">深圳option>
    122. select>
    123. div>
    124. <div class="item">
    125. <label for="slike" class="item-label">爱好:label>
    126. 上网:<input type="checkbox" name="slike" value="上网" />
    127. 唱歌:<input type="checkbox" name="slike" value="唱歌" />
    128. 编程:<input type="checkbox" name="slike" value="编程" />
    129. 书法:<input type="checkbox" name="slike" value="书法" /><br />
    130. div>
    131. <div class="item">
    132. <label for="semail" class="item-label">邮箱:label>
    133. <input type="text" id="semail" name="semail" class="item-text" placeholder="设置邮箱"
    134. autocomplete="off" tip="请输入邮箱">
    135. div>
    136. <div class="item">
    137. <label for="simage" class="item-label">头像:label>
    138. <input type="file" name="simage" class="item-file">
    139. div>
    140. <div class="item">
    141. <input type="submit" value="提交" class="item-submit">
    142. div>
    143. fieldset>
    144. form>
    145. body>
    146. html>

     注:

    jQuery1.9之后的版本把所有在早期版本里标记为deprecated的api都正式删除了,不再向后兼容。所以使用MVC模板自动生成的jQuery-3.3.1.min.js时会报脚本错,导致无法完成验证。 Visual Studio 2019中生成的mvc项目中,自动生成的jQuery-3.4.1.min.js已解决该问题。建议使用最新版本。

  • 相关阅读:
    nextjs上手
    FFmpeg5.1.3编译动态库踩坑之旅(基于Linux虚拟机)
    神经网络参数量和计算量,神经网络是参数模型吗
    Lesson4-1:OpenCV图像特征提取与描述---角点特征
    解决问题的思路---常见的算法思想
    CTO强烈禁止使用Calendar,那用啥?
    Spring Batch -配置步骤 (XML/Java)
    ROS2与turtlebot4仿真入门教程-测试雷达和相机
    面试算法题(shell/日志数据查询统计)
    软考-网络攻击原理与常用方法
  • 原文地址:https://blog.csdn.net/feng8403000/article/details/127127103