[英]validating form. addEventListener not listening
好的,所以我有一个表单,用于检查用户是否在用户名字段中输入了用户名。 最重要的是,我还想知道点击了什么按钮,我真的很想看看注销按钮何时被点击。 在我看来,提交表单时 addEventListener 没有注册“点击”值。 当我使用 Firefox 调试器运行它时, buttons
和buttonLength
都有正确的值。 所以我的问题是,我如何检查 addEventListener 值或者它是否被通过? 寻找一些关于我做错了什么的见解。
<!DOCTYPE html>
<html>
<head>
<title>Not empty</title>
</head>
<body>
<script>
function ValidateForm(frm){
var buttons = document.getElementsByName('adam');
var buttonsLength = buttons.length;
for (var i = 0; i < buttonsLength; i++){
buttons[i].addEventListener('click', clickResponse, false);
};
function clickResponse(){
if(this.id == "logout"){
alert(this.id);
}else {
alert("not logout:" + this.id);
};
};
if (!frm.UserName.value) {
alert("You must enter your username.");
frm.UserName.focus();
return false;
}
return true;
}
</script>
<form method="post" action="test.html" onsubmit="return ValidateForm(this)">
<input type="input" name="UserName" value="">
<input type="password" name="Password" value="">
<button name="adam" id="login">login</button>
<button name="adam" id="sendMe">send me my password</button>
<button name="adam" id="logout">logout</button>
<form>
</body>
也许我错了,但我认为您尝试执行以下操作:
<!DOCTYPE html>
<html>
<head>
<title>Not empty</title>
</head>
<body>
<form method="post" name="formname" action="test.html">
<input type="input" id="username" name="userName" value="">
<input type="password" id="password" name="Password" value="">
<button type="button" name="adam" id="login">login</button>
<button type="button" name="adam" id="sendMe">send me my password</button>
<button type="button" name="adam" id="logout">logout</button>
<form>
<script>
var buttons = document.getElementsByName('adam');
var buttonsLength = buttons.length;
for(var i=0;i<buttonsLength; i++){
buttons[i].addEventListener('click', clickResponse, false);
};
function clickResponse(){
var u, p;
u=document.getElementById('username');
p=document.getElementById('password');
switch(this.id) {
case 'logout':
alert('Logout '+this.id);
break;
case 'login':
if(u.value.length==0 ||
p.value.length==0) {
alert("Please enter your unsername and password.");
if(u.length==0) {
u.focus();
} else {
p.focus();
}
} else {
alert('submit');
//document.forms.formname.submit();
}
break;
case 'sendMe':
if(u.value.length==0) {
alert("Please enter your username.");
u.focus();
return false;
} else {
alert('submit');
//document.forms.formname.submit();
}
break;
}
};
</script>
</body>
因此,您需要在单击之前分配侦听器,然后我猜您想捕获单击检查按钮 ID(要执行的命令),然后根据单击的按钮检查用户和传递是否已满,如果是,则提交表单...我已经更改了您的代码,但我认为这正是您要找的。
希望能帮助到你!!!
你的代码有点乱,很难理解你到底需要什么。
话虽如此,您应该使用onclick
属性将按钮绑定到 3 个单独的功能。
在这些函数中,您可以获得执行登录/注销/sendMe 功能所需的任何 dom 节点。
像这样:
<!DOCTYPE html> <html> <head> <title>Not empty</title> </head> <body> <script> function login(){ alert('login function'); // do what you need to here to login var username = document.getElementsByName('input-username').value; var password = document.getElementsByName('input-password').value; if (!username){ alert("You must enter your username."); }else if (!password){ alert("You must enter your password."); } } function sendMe(){ alert('sendMe function'); // sendMe functionality here } function logout(){ alert('logout function'); // logout functionality here } </script> <form method="post" action="test.html"> <input id='input-username' type="input" name="UserName" value="" /> <input id='input-password' type="password" name="Password" value="" /> <button id="login" onClick="login()">login</button> <button id="sendMe" onClick="sendMe()">send me my password</button> <button id="logout" onClick="logout()">logout</button> <form> </body>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.