事件 鼠标事件 表单事件from表单

    科技2022-07-16  100

    事件

    事件的三大要素 事件绑定对象 指的是,绑定事件和事件处理函数的标签 这个标签有可能不是触发事件的标签 事件类型 绑定的标签的事件类型 鼠标事件 表单事件 键盘事件 触摸事件 特殊事件 事件处理函数 触发事件时执行的程序 一个标签,往往相同的事件类型只能绑定一个事件处理函数 如果要绑定多个事件处理函数,需要使用事件监听语法

    鼠标事件

    <style> div{ width: 200px; height: 200px; border:1px solid black; } span{ border: 1px solid green; } </style> </head> <body> <div>我是div <span>我是span标签</span> </div> <script> // 鼠标事件 // 通过操作鼠标,来触发事件 var oDiv = document.querySelector('div'); // 1,左键单击事件 click oDiv.onclick = function(){ console.log('触发的是鼠标左键单击事件'); } // 2,左键双击事件 dblclick // oDiv.ondblclick = function(){ // console.log('触发的是鼠标左键双击事件'); // } // 3,右键单击事件 contextmenu // oDiv.oncontextmenu = function(){ // console.log('触发的是鼠标右键事件'); // } // 4,鼠标按键按下事件 mousedown // 当鼠标按下时,触发事件 // 鼠标的点击事件是 两个动作完成的 // 一个是鼠标按下,一个是鼠标抬起 // 如果只有按下动作,只会触发 mousedown // 抬起时,完成一个完整的点击效果,才会触发 click // oDiv.onmousedown = function(){ // console.log('鼠标按下了'); // } // 5,鼠标按键抬起事件 mouseup // 当鼠标抬起时,触发事件 // oDiv.onmouseup = function(){ // console.log('鼠标抬起来了'); // } // 总结: // 1,鼠标点击事件,分为两部分完成 // 鼠标按下 鼠标抬起 // 2,只操作鼠标按下,只会触发鼠标按下事件 // 3,只操作鼠标抬起,只会触发鼠标抬起事件 // 4,两个操作都完成后,才会触发鼠标点击事件 // 5,鼠标按下抬起,不区分左键右键 // 6,鼠标移入事件 // 经过标签边界线的时候触发 // mouseover mouseenter // 经过子级会触发 oDiv.onmouseover = function(){ console.log('我进来了1111'); } // 经过子级不触发 oDiv.onmouseenter = function(){ console.log('我进来了2222'); } // 7,鼠标移出事件 // 经过标签边界线的时候触发 // mouseout mouseleave // 经过子级会触发 oDiv.onmouseout = function(){ console.log('我出去了1111'); } // 经过子级不会触发 oDiv.onmouseleave = function(){ console.log('我出去了2222'); } // 总结: // 1,鼠标移出,移出事件,只有经过标签边界线时触发 // 在标签内部时,不会触发 // 2,mouseover mouseout // 经过当前标签边界线时会触发 // 经过子级标签边界线时也会触发 // 3,mouseenter mouseleave // 只有经过当前标签时会触发 // 经过子级标签时,不会触发 // 8,mousemove 鼠标移动 // 鼠标在标签范围内移动,会触发事件 // 效果类似于 :hover oDiv.onmousemove = function(){ console.log('我动来动去'); } </script>

    表单事件

    <body> <form action="./01_复习.html"> 账号 : <input type="text"><br> <button>提交</button> </form> <script> // 表单事件 // 与form表单相关的事件 var oIpt = document.querySelector('input'); var oForm = document.querySelector('form'); // 1, focus 标签获取焦点事件 // 所谓的鼠标检点,就是鼠标点击的对象是当前标签 oIpt.onfocus = function(){ console.log('我被点击了,我获取了焦点'); } // 2, change 标签失去焦点,并且数据改变,触发事件 // 触发事件有两个条件 // 1,标签失去焦点 --- 焦点在其他标签上 // 2,标签的数据,发生改变 oIpt.onchange = function(){ console.log('我失去焦点了,而且我被改变了') } // 3, input 标签输入内容时,触发事件 oIpt.oninput = function(){ console.log('我被输入数据了') } // 4, submit 表单提交事件 // 绑定给form表单标签 // 可以阻止提交表单 // 多用于,提交数据时,做判断操作 // 如果数据不符合要求,就阻止表单提交 oForm.onsubmit = function(e){ // 阻止表单提交,后面详细讲 e.preventDefault(); window.alert('您输入的数据有误') } </script>

    from表单

    <body> <form action="./01_复习.html"> 注册账号: <input type="text" name="us" placeholder="请你您输入账号,8-16位"><span name="username"></span><br> 注册密码: <input type="password" placeholder="请你您输入密码,8-16位"><br> 重复密码: <input type="password" placeholder="二次输密码,与密码一致"><br> 验 证 码 : <input type="text" placeholder="请你您二次验证码"> <br> <span name="vc"></span><button type="button" name="reset">看不清刷新</button><br> <button>提交</button> </form> <script> // 简单的form表单验证demo // 1,要获取生成,验证码 // 实际项目中,往往是与第三方机构获取验证码 // 目前本地生成一个随机的6位验证码 var str = '0123456789abcdefghijklmnopqrstuvwxyzABCEDEFGHIJKLMNOPQRSTUVWXYZ'; var oVc = document.querySelector('[name="vc"]'); oVc.innerHTML = setVc(str); var oBtnReset = document.querySelector('[name="reset"]'); oBtnReset.onclick = function(){ oVc.innerHTML = setVc(str); } // 2,当标签获取焦点时,给标签后,输入提示信息 // 标签要在不同的事件中获取数据,不能直接获取数据 // 一般是先获取标签对象,然后在事件执行的时候,获取 标签对象.value数据 // 当输入账号标签获取焦点时 var oIptUserName = document.querySelector('[name="us"]'); var oSpanUserName = document.querySelector('[name="username"]'); // 获取焦点,在span标签中输入提示 oIptUserName.onfocus = function(){ oSpanUserName.innerHTML = '请您输入账号,不能为空,长度是8-16位'; oSpanUserName.style.color = 'black'; } // 输入数据,在span标签中输入提示 oIptUserName.oninput = function(){ // 1,获取input标签数据的数据,length属性就是输入的数据长度 var usernameValue = oIptUserName.value; oSpanUserName.innerHTML = `您当前输入${usernameValue.length}个字符,最多输入16位字符,您还是可以输入${16-usernameValue.length}个字符`; oSpanUserName.style.color = 'black'; } // 当失去焦点时,判断,输入的数据,是否符合规范 // 目前就判断数据的长度是8-16为字符 oIptUserName.onchange = function(){ // 验证数据长度在8-16位之间 var usernameValue = oIptUserName.value; // 当账号长度在8-16位之间时,输入账号符合规范的提示信息 if( usernameValue.length >= 8 && usernameValue.length <= 16 ){ oSpanUserName.innerHTML = '您输入的账号符合规范'; oSpanUserName.style.color = 'black'; // 当账号长度不在8-16位之间时,输入账号不符合规范的提示信息 }else{ oSpanUserName.innerHTML = '您输入的账号不符合规范'; oSpanUserName.style.color = 'red'; } } // 其他输入框的验证,自己补全 // 爱怎么写怎么写,能有提示内容和效果就可以 // 当点击提交按钮时,进行数据验证 // 数据必须符合规范,才能执行提交表单效果 // 否则会阻止表单提交 var oForm = document.querySelector('form'); // 提交事件,要阻止调教,参数必须有一个e oForm.onsubmit = function(e){ // 1,输入内容不能为空 // 如果输入内容是空字符串,就在对应项输入提示,并且组织表单提交,终止程序 var usernameValue = oIptUserName.value; // 如果账号数据为空 if( usernameValue === '' ){ // 阻止表单提交 e.preventDefault(); oSpanUserName.innerHTML = '您输入的账号,不能为空'; oSpanUserName.style.color = 'red'; return; } // 其他的为空判断,自己来补充完整 // 验证数据长度 if( !( usernameValue.length >= 8 && usernameValue.length <= 16 ) ){ e.preventDefault(); oSpanUserName.innerHTML = '您输入的账号,不符合长度规范,请输入8-16位账号'; oSpanUserName.style.color = 'red'; return; } // 其他的长度判断,自己来补充完整 // 密码和二次输入密码,数据必须完全一致 // === // 输入的验证码数据,必须与生成的验证码内容,完全一致 // === // 如果之前所有的if判断,都没有被执行 // 证明输入的账号,密码符合规范 // 才能正确提交数据 } function setVc(str) { var vc = ''; while (vc.length < 6) { var num = parseInt(Math.random() * str.length); if (vc.indexOf(str[num]) === -1) { vc += str[num]; } } return vc; } </script>
    Processed: 0.010, SQL: 8