<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<button>添加事件</button>
<button>事件监听</button>
<button>事件派发</button>
<form action="#" name="eventForm" method="post">
<fieldset>
<legend>表单常用事件</legend>
<input
type="text"
id="focus"
placeholder="onFocus"
onfocus="myFocus(this)"
/>
<input
type="text"
id="blur"
placeholder="onBlur"
onblur="myBlur(this)"
/>
<input
type="text"
name="change"
id="change"
placeholder="onChange"
onchange="myChange(this)"
/>
<input
type="text"
id="input"
placeholder="onInput"
oninput="myInput(this)"
/>
<button name="submit" onclick="check(this)">提交</button>
</fieldset>
</form>
<script>
function show() {
console.log(event.target);
}
// 添加事件
let btn1 = document.querySelector("button:first-of-type");
btn1.onclick = show;
// 添加事件监听
let btn2 = document.querySelector("button:nth-of-type(2)");
btn2.addEventListener("click", show, false);
// btn2.removeEventListener("click", show, false);
// 事件派发
let btn3 = document.querySelector("button:nth-of-type(3)");
// 先添加一个事件,然后自动去的触发它
btn3.addEventListener("click", show, false);
// 创建一个自定义事件
let myclick = new Event("click");
// setInterval: 间歇式的定时器
// dispatchEvent 派发事件
setInterval(() => {
btn3.dispatchEvent(myclick);
}, 2000);
// form常用事件
function myFocus(ele) {
ele.form.focus.value = "获取焦点";
}
function myBlur(ele) {
ele.form.blur.value = "获取焦点,又失去焦点";
}
function myChange(ele) {
ele.form.change.value = "值修改后,又失去焦点";
}
// input: 值发生改变就会触发,不必等失去焦点,与change不同
function myInput(ele) {
let input = document.querySelector("#input");
let p = document.createElement("p");
p.textContent = ele.form.input.value;
input.insertAdjacentElement("afterend", p);
}
function check(ele) {
// 防止默认的提交行为, 用户自定义
event.preventDefault();
// 防止冒泡
event.stopPropagation();
let focus = ele.form.focus;
let blur = ele.form.blur;
let change = ele.form.change;
let input = ele.form.input;
if (focus.value.length === 0) {
alert("onFocus不能为空");
return false;
} else if (blur.value.length === 0) {
alert("onBlur不能为空");
return false;
} else if (change.value.length === 0) {
alert("onChange不能为空");
return false;
} else if (input.value.length === 0) {
alert("onInput不能为空");
return false;
} else {
alert("验证通过");
}
}
</script>
</body>
</html>
图示:
相关推荐
© 2020 asciim码
人生就是一场修行