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'>&nbsp;</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;”@好的,如果你相信答案是正确的,请接受答案。所以,没有更多的用户会在这张票证上花费时间。谢谢,我正在想办法“关闭”它。