博客列表 >实例演示禁用表单默认提交的三种方式和 实例演示this.target,currentTarget的区别与联系

实例演示禁用表单默认提交的三种方式和 实例演示this.target,currentTarget的区别与联系

放手去爱
放手去爱原创
2022年11月14日 10:04:40444浏览

实例演示禁用表单默认提交的三种方式和 实例演示this.target,currentTarget的区别与联系

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>表单事件</title>
  8. <link rel="stylesheet" href="form.css" />
  9. </head>
  10. <body>
  11. <!-- <form action="login.php" method="post" id="login" onsubmit="return false"> -->
  12. <form action="login.php" method="post" id="login">
  13. <label class="title">用户登录</label>
  14. <label for="email">邮箱:</label>
  15. <input type="email" id="email" name="email" value="" autofocus />
  16. <label for="password">密码:</label>
  17. <input type="password" id="password" name="password" />
  18. <!-- form中的button,默认type="submit",改成type="button"就可以禁用 -->
  19. <button name="submit">登录</button>
  20. <!-- <button name="submit" type="button">登录</button> -->
  21. </form>
  22. <script>
  23. // document.forms.login.onsubmit = function () {
  24. // return false;
  25. // };
  26. // 事件对象来控制
  27. document.forms.login.submit.onclick = function (ev) {
  28. // 如果事件方法,要用到事件对象,就应该传参
  29. // console.log(ev);
  30. // 直接使用事件对象的引用: event (不推荐),window.event
  31. // console.log(event);
  32. // console.log(ev === event);
  33. /**
  34. * * 禁用表单默认提交行为的3种方法
  35. * * 1. form.onsubmit = 'return false'
  36. * * 2. form.button.type = 'button'
  37. * * 3. event.preventDefault()
  38. */
  39. // 禁用默认提交行为
  40. ev.preventDefault();
  41. // 禁用冒泡
  42. ev.stopPropagation();
  43. // 因为当前不存在事件委托,不需要利用事件冒泡
  44. // 不用再区分事件主体的类型的, 之前要区分: 绑定和触发
  45. // 事件主体: 二合一
  46. console.log(ev.target === ev.currentTarget);
  47. console.log(this === ev.target);
  48. /**
  49. * * 当前事件主体的3种形式
  50. * * 1. ev.target
  51. * * 2. ev.currentTarget
  52. * * 3. this
  53. */
  54. // form属性: 始终指向当前表单对象,每一个控件都有的
  55. // input,select,button,textarea...
  56. console.log(this.form);
  57. // email
  58. let email = this.form.email;
  59. // password
  60. let password = this.form.password;
  61. // 非空验证
  62. if (email.value.trim().length === 0) {
  63. alert('邮箱不能为空');
  64. email.focus();
  65. return false;
  66. } else if (password.value.trim().length === 0) {
  67. alert('密码不能为空');
  68. password.focus();
  69. return false;
  70. }
  71. };
  72. /**
  73. * 其它表单事件
  74. * 1. submit: 提交
  75. * 2. focus: 焦点
  76. * 3. blur: 失去焦点
  77. * 4. change: 值改变,且失去焦点时
  78. * 5. input: 值一旦改变就触发, 不等失去焦点
  79. */
  80. </script>
  81. </body>
  82. </html>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议