use*_*366 3 javascript forms events
我是HTML和JavaScript的新手.下面是示例代码.以下代码块可以使用onsubmit作为表单标记属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Custom Tags</title>
</head>
<body>
<form id="form1" action="#" onsubmit="functSubmit()">
<label for="input1">This text will be passed in CustomeEvent</label>
<input id="input1" type="text" value="default">
<input type="submit" id="bt1">
</form>
<script>
function functSubmit(event) {
var msg = document.getElementById("input1").value;
alert(msg);
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是当我用addEventListener()编写下面的代码时,它不起作用.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Custom Tags</title>
</head>
<body>
<form id="form1" action="#">
<label for="input1">This text will be passed in CustomeEvent</label>
<input id="input1" type="text" value="default">
<input type="submit" id="bt1">
</form>
<script>
document.getElementById("form1").addEventListener('submit', functSubmit(event));
function functSubmit(event) {
var msg = document.getElementById("input1").value;
alert(msg);
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么addEventListener不工作?
Set*_*eth 12
那是因为你正在立即调用事件监听器的回调.只需将函数作为参数传递,而无需调用它.无论何时提交表单,该函数都会将事件对象传递给它.
document.getElementById("form1").addEventListener('submit', functSubmit);
function functSubmit(event) {
var msg = document.getElementById("input1").value;
alert(msg);
}Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Custom Tags</title>
</head>
<body>
<form id="form1" action="#">
<label for="input1">This text will be passed in CustomeEvent</label>
<input id="input1" type="text" value="default">
<input type="submit" id="bt1">
</form>
</body>
</html>Run Code Online (Sandbox Code Playgroud)
请注意:通常更好的做法是将HTML的关注点与JavaScript分开.虽然在属性中内联您的事件处理程序,但它会将两个不同的问题联系在一起.出于可维护性的考虑,请单独管理处理程序.您还可以利用事件委派.
| 归档时间: |
|
| 查看次数: |
15891 次 |
| 最近记录: |