Javascript 使用onsubmit无法进行表单验证
我的表单验证过去是有效的,但现在我无法找出问题所在。 当输入电子邮件或用户名时,您总是会弹出一个带有错误的窗口 需要用户名或电子邮件 逐个删除每个检查,您将收到下一条错误消息Javascript 使用onsubmit无法进行表单验证,javascript,Javascript,我的表单验证过去是有效的,但现在我无法找出问题所在。 当输入电子邮件或用户名时,您总是会弹出一个带有错误的窗口 需要用户名或电子邮件 逐个删除每个检查,您将收到下一条错误消息 <form method='POST' name='signIn' onsubmit='return checkLoginForm(this);'> <input type='hidden' name='action' value='signIn'> <
<form method='POST' name='signIn' onsubmit='return checkLoginForm(this);'>
<input type='hidden' name='action' value='signIn'>
<div class='enterInfo' align='left'>Username or Email 1:</div><input size='60' type='text' name='username' class='input' id='theFieldID'></div>
<div class='enterInfo' align='left'>Password: <input id='username' size='60' type='password' name='pswd' class='input'></div>
<div class='agreement' align='left'> </div>
<input type='submit' value='Log In'>
</form>
用户名或电子邮件1:
密码:
这是js
function checkLoginForm(form) {
if(form.username.value == "") {
alert("Username or Email is needed");
form.username.focus();
return false;
}
if(form.username.value.length < 4) {
alert("Username or Email is to short");
form.username.focus();
return false;
}
re = /^[-_a-zA-Z0-9.,@#!?]*$/;
if(!re.test(form.username.value)) {
alert("Username or Email only contains letters, numbers and _-.,@#!?");
form.username.focus();
return false;
}
if(form.pswd.value == ""){
alert("Password is needed");
form.pwd1.focus();
return false;
}
return true;
函数checkLoginForm(表单){
如果(form.username.value==“”){
警报(“需要用户名或电子邮件”);
form.username.focus();
返回false;
}
if(form.username.value.length<4){
警报(“用户名或电子邮件为短”);
form.username.focus();
返回false;
}
re=/^[-a-zA-Z0-9.,@#!?]*$/;
if(!re.test(form.username.value)){
警告(“用户名或电子邮件仅包含字母、数字和@#!?”;
form.username.focus();
返回false;
}
如果(form.pswd.value==“”){
警报(“需要密码”);
form.pwd1.focus();
返回false;
}
返回true;
}对于这种事情:
if(form.username.value == "") {
alert("Username or Email is needed");
form.username.focus();
return false;
}
最好直接访问对象:
if(document.getElementById("theFieldID").value == "") {
alert("Username or Email is needed");
form.username.focus();
return false;
}
在任何情况下,您都需要注意这些元素上的名称和ID。例如,您正在将“form”作为参数传递,但没有指定名称或ID,无法告诉它您正在谈论的表单。input type=“submit”
将提交表单
您需要使用event.preventDefault
来防止默认行为并执行验证
还有form.username.focus()
和form.username.focus()代码>将抛出非函数
错误
您需要使用document.getElmentById(someElement').focus()
访问此类元素的最佳方式是通过Id。此外,为了更好地优化和舒适,最好一次为元素分配一个变量,下次使用该变量:
函数checkLoginForm(表单){
usn=document.getElementById(“theFieldID”);
pwd=document.getElementById(“密码”);
如果(usn.value==“”){
警报(“需要用户名或电子邮件”);
usn.focus();
返回false;
}
如果(usn.value.length<4){
警报(“用户名或电子邮件为短”);
usn.focus();
返回false;
}
re=/^[-a-zA-Z0-9.,@#!?]*$/;
如果(!重新测试(usn.值)){
警告(“用户名或电子邮件仅包含字母、数字和@#!?”;
usn.focus();
返回false;
}
如果(pwd.value==“”){
警报(“需要密码”);
pwd.focus();
返回false;
}
返回true;
}
用户名或电子邮件1:
密码:
使用以下代码:
函数checkLoginForm(){
var eleuser=document.forms[“登录”][“用户名”];
var elepass=document.forms[“signIn”][“pswd”];
var username=eleuser.value;
var pass=elepass.value;
如果(用户名==“”){
警报(“需要用户名或电子邮件”);
eleuser.focus();
返回false;
}
如果(username.length<4){
警报(“用户名或电子邮件为短”);
eleuser.focus();
返回false;
}
re=/^[-a-zA-Z0-9.,@#!?]*$/;
如果(!重新测试(用户名)){
警告(“用户名或电子邮件仅包含字母、数字和@#!?”;
eleuser.focus();
返回false;
}
如果(通过==“”){
警报(“需要密码”);
elepass.focus();
返回false;
}
返回true;
}
用户名或电子邮件1:
密码:
首先,有两个元素的id/name为“username”。确保每个元素都有一个唯一的id。对用户名或电子邮件太短的验证检查只是检查用户名值。确保这些在您的验证中被清楚地检查。谢谢!那东西变了,我没注意到。谢谢!这是成功的,我将使用这段代码并找出我做了什么wrong@harkly,听到这个消息我很高兴。代码的错误之处在于您试图将注意力集中在某个元素上。它无法在您的途中访问元素。因此,它无法解析“return false;”@好的,如果你相信答案是正确的,请接受答案。所以,没有更多的用户会在这张票证上花费时间。谢谢,我正在想办法“关闭”它。