定制开发小程序JavaScript之表单验证

 前言:定制开发小程序我们这一次讲的运用了定制开发小程序前面几篇文章说讲的的内容,定制开发小程序比之前的要难一些,定制开发小程序我会在代码里以注释的定制开发小程序形式详细的讲解。

目录


一.定制开发小程序简单的表单验证

 

定制开发小程序验证方式一:

  1. <html>
  2. <head>
  3. <meta charset="UTF-8">
  4. <title>Title</title>
  5. <style>
  6. span {
  7. color: red;
  8. font-weight: bold;//字体粗细
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <form action="" id="myForm">
  14. //onkey(键),onkeyup定制开发小程序当键被点击
  15. <p>名字: <input type="text" id="userName" onkeyup="checkName(this)"><span id="l1"></span></p>
  16. <p>密码: <input type="text" id="userPwd" onkeyup="checkPwd(this)"><span id="l2"></span></p>
  17. <p>邮箱: <input type="text" id="userEmail" onkeyup="checkEmail(this)"><span id="l3"></span></p>
  18. <p>
  19. <button>登录</button>
  20. </p>
  21. </form>
  22. <script>
  23. //用来检查名字是否合规
  24. function checkName() {
  25. /*定义一个值拿到姓名输入框值的长度*/
  26. var length = userName.value.length
  27. if (length > 0) {//里面有内容
  28. //名字的大小应该在 3-6 之间(定义值的长度)
  29. if (length >= 3 && length <= 6) {
  30. l1.textContent = "😊"
  31. return true
  32. }
  33. //不在区间之内
  34. l1.textContent = "长度必须在3-6之间"
  35. //必须return一个值,否则会被覆盖,return有中断的作用
  36. return false
  37. }
  38. //里面没有内容
  39. l1.textContent = "长度必须大于0"
  40. return false
  41. }
  42. //用来检查密码是否合规
  43. function checkPwd() {
  44. var length = userPwd.value.length
  45. if (length > 0) {//里面有内容
  46. //名字的大小应该在 3-6 之间
  47. if (length >= 3 && length <= 6) {
  48. l2.textContent = "😊"
  49. return true
  50. }
  51. //不在区间之内
  52. l2.textContent = "长度必须在3-6之间"
  53. return false
  54. }
  55. //里面没有内容
  56. l2.textContent = "长度必须大于0"
  57. return false
  58. }
  59. //用来检查邮箱是否合规
  60. function checkEmail() {
  61. var length = userEmail.value.length
  62. if (length > 0) {//里面有内容
  63. //名字的大小应该在 3-6 之间
  64. if (length >= 3 && length <= 6) {
  65. l3.textContent = "😊"
  66. return true
  67. }
  68. //不在区间之内
  69. l3.textContent = "长度必须在3-6之间"
  70. return false
  71. }
  72. //里面没有内容
  73. l3.textContent = "长度必须大于0"
  74. return false
  75. }
  76. //添加提交事件(会具备返回值)
  77. myForm.onsubmit = () => {
  78. //阻止表单的提交 需要返回 false
  79. //有两种方法
  80. //第一种:return checkName()&&checkPwd()&&checkEmail()
  81. //第二种:
  82. var f1 = checkName()
  83. var f2 = checkPwd()
  84. var f3 = checkEmail()
  85. return f1 && f2 && f3
  86. }
  87. </script>
  88. </body>
  89. </html>

 验证方式二:

 这是上面代码的优化

  1. <html>
  2. <head>
  3. <meta charset="UTF-8">
  4. <title>Title</title>
  5. <style>
  6. span {
  7. color: red;
  8. font-weight: bold;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <form action="" id="myForm">
  14. <p>名字: <input type="text" id="userName" onkeyup="checkLabel(this)"><span><i class="error"></i></span></p>
  15. <p>密码: <input type="text" id="userPwd" onkeyup="checkLabel(this)"><span><i class="error"></i></span></p>
  16. <p>邮箱: <input type="text" id="userEmail" onkeyup="checkLabel(this)"><span><i class="error"></i></span></p>
  17. <p>
  18. <button>登录</button>
  19. </p>
  20. </form>
  21. <script>
  22. //用来检查是否合规
  23. function checkLabel(obj) {
  24. var length = obj.value.length
  25. //input标签和span标签都在p标签里,它们是兄弟关系,可以获得下一个相邻元素
  26. // var label=obj.nextElementSibling
  27. //在span标签里加一个i标签,可以获得i标签父级元素相邻的上一个元素
  28. var label = obj.parentElement.getElementsByClassName("error")[0]
  29. if (length > 0) {//里面有内容
  30. //名字的大小应该在 3-6 之间
  31. if (length >= 3 && length <= 6) {
  32. label.textContent = "😊"
  33. return true
  34. }
  35. //不在区间之内
  36. label.textContent = "长度必须在3-6之间"
  37. return false
  38. }
  39. //里面没有内容
  40. label.textContent = "长度必须大于0"
  41. return false
  42. }
  43. //添加提交事件(会具备返回值)
  44. myForm.onsubmit = () => {
  45. //阻止表单的提交 需要返回 false
  46. // return checkName()&&checkPwd()&&checkEmail()
  47. var f1 = checkLabel(userName)
  48. var f2 = checkLabel(userEmail)
  49. var f3 = checkLabel(userPwd)
  50. return f1 && f2 && f3
  51. }
  52. </script>
  53. </body>
  54. </html>

 运行结果:

 

 

 

 二.正则验证

我相信各位小伙伴们应该都知道正则表达式,但我还是要讲一下, 正则表达式又称规则表达式,它是对字符串操作的一种逻辑公式,即用事先定义好的一些特定字符以及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
正则表达式可以用来做什么?
    给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

    1. 检查给定的字符串是否符合正则表达式的过滤逻辑,即能否匹配;
    2. 可以通过正则表达式的匹配,从字符串中提取或替换特定的部分。

一.正则的规则

                                                                  内容

\d数字[0-9]
\D非数字^[0-9]
\w数字+英文+下划线[0-9a-zA-Z_]
\W非数字+英文+下划线^[0-9a-zA-Z_]
.任意字符

                                                                 次数 

0~1次
+至少一次
*0~任意次
\d{5}五个数字(数字任意填)
\d{5,10}至少五次,最多10次(数字任意填

 二.正则的注意事项

必须以/^开头
必须以$/结尾
不要把\写成\\
定义正则对象(例如): var  rex=/^\d{5}$/

使用正则对象(例如): rex.test('123')

接下来我们用正则来写一个简单验证

  1. <html>
  2. <head>
  3. <meta charset="UTF-8">
  4. <title>Title</title>
  5. <style>
  6. span {
  7. color: red;
  8. font-weight: bold;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <form action="" id="myForm">
  14. <p>名字: <input type="text" id="userName" onkeyup="checkLabel(this,/^[a-zA-Z]{3,6}$/,'名字的长度在3-6')"><span><i class="error"></i></span></p>
  15. <p>密码: <input type="text" id="userPwd" onkeyup="checkLabel(this,/^\w{6,10}$/,'密码的长度在6-10')"><span><i class="error"></i></span></p>
  16. <p>邮箱: <input type="text" id="userEmail" onkeyup="checkLabel(this,/^\w+[.]\w+@\w+[.]\w+$/,'邮箱中必须包含@')"><span><i class="error"></i></span></p>
  17. <p>
  18. <button>登录</button>
  19. </p>
  20. </form>
  21. <script>
  22. //用来检查是否合规
  23. //括号里是传入的值
  24. function checkLabel(obj,rex,tip) {
  25. var length = obj.value.length
  26. var label = obj.parentElement.getElementsByClassName("error")[0]
  27. if (length > 0) {//里面有内容
  28. //内容在正则匹配之间
  29. if (rex.test(obj.value)) {
  30. label.textContent = "😊"
  31. return true
  32. }
  33. //不在区间之内
  34. label.textContent = tip
  35. return false
  36. }
  37. //里面没有内容
  38. label.textContent = "长度必须大于0"
  39. return false
  40. }
  41. //添加提交事件(会具备返回值)
  42. myForm.onsubmit = () => {
  43. //阻止表单的提交 需要返回 false
  44. // return checkName()&&checkPwd()&&checkEmail()
  45. var f1 = checkLabel(userName)
  46. var f2 = checkLabel(userEmail)
  47. var f3 = checkLabel(userPwd)
  48. return f1 && f2 && f3
  49. }
  50. </script>
  51. </body>
  52. </html>

三.二级联动

二级联动这个词听起来是不是很高级,但是它其实在我们的生活中很常见,下面这个代码你们一看就知道它是什么了o(TヘTo)

  1. <html>
  2. <head>
  3. <meta charset="UTF-8">
  4. <title>Title</title>
  5. </head>
  6. <body>
  7. //select 下拉框,provinces 省份,onchange 改变事件
  8. <select id="province" onchange="myChange()"></select>
  9. <select id="cities"></select>
  10. <script>
  11. //JS数组的特点
  12. //类型不限制
  13. //长度不限制
  14. //数组可以是字符串
  15. var provinces=[]
  16. //城市
  17. provinces["湖南省"]=["长沙","怀化","岳阳"]
  18. provinces["广西省"]=["桂林","梧州","来宾"]
  19. provinces["浙江省"]=["杭州","宁波","舟山"]
  20. //省份怎么来
  21. // for of 相当于foreach 遍历元素
  22. // for in 遍历下标
  23. for(let i in provinces){
  24. //往省份的下拉框中添加选项
  25. //appendChild 追加子节点
  26. //<option value="i">i</option>
  27. //第一个i是value的值,第二个i是显示的值
  28. province.appendChild(new Option(i,i))
  29. }
  30. //城市里面放值
  31. function setCity(name) {
  32. for(let i of provinces[name]){
  33. cities.appendChild(new Option(i,i))
  34. }
  35. }
  36. setCity(province.value)
  37. function myChange() {
  38. //清空原来的选项
  39. cities.innerHTML=""
  40. //输入框和下拉框可以拿到value
  41. setCity(province.value)
  42. }
  43. </script>
  44. </body>
  45. </html>

运行结果:

 

 好了,这篇文章到处结束了,期待我们下一篇文章相见( ̄▽ ̄)"

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发