2014-09-26 38 views
-3

我有一个表单,如果用户名和密码为空或不够长,我需要能够显示错误信息。我已经想通了,它正在工作。我现在的问题是2倍。 #1如何获得多个错误以显示1个警报? (使用数组??)以及如果全部输入正确,我如何产生成功的警报。这是我的JavaScript和HTML。需要表格成功的信息

<script> 
function formIsValid(){ 
var validation = true; 
validation &= checkUsername(); 
validation &= checkPassword(); 
return validation; 
} 


function checkUsername(){ 
var name= document.forms["RegistrationForm"]["user"].value; 
var nameLength =name.length; 
if(name == ""){ 
alert ("Please Enter a Username"); 
return false; 
} 
else if (nameLength <8){ 
alert ("The Username must be 8 characters"); 
return false; 
} 
} 

function checkPassword(){ 
var password=document.forms["RegistrationForm"]["pass"].value; 
var passwordLength =password.length; 
if(password ==""){ 
alert ("Please Enter a Password"); 
return false; 
} 
else if (passwordLength <8){ 
alert ("The Password must be 8 characters"); 
return false; 
} 
} 



</script> 

HTML代码

<form name="RegistrationForm" onsubmit="return formIsValid()" action=""> 
<h2>Registration</h2> 
Username:<input type="text" name="user" size="20"/> (At least 8 characters)<br/> 
<br/> 
Password:<input type="text" name="pass" size="20"/> (At least 8 Characters)<br/> 
<br/> 

<input type="submit" value="Submit">  
<input type="reset" name="reset" value="Clear"/> 
<p> 
</form> 
+1

对于你的第一个问题,你应该把你所有的验证包装在一个函数中。在这个函数中,你抛出你的验证函数,而不是为每个错误显示一个alert(),将它们存储在一个数组中,并将布尔值设置为false。在验证结束时,如果布尔值为false,则会发出警报,然后添加已存储在数组中的字符串错误。 对于第二个问题,为什么不直接显示alert()呢? – 2014-09-26 16:02:57

+0

你可以不用警报,把你的错误信息放在一个数组中,然后如果你的数组不是空的,就有错误,你可以通过循环错误来查看它们。 – Wissem 2014-09-26 16:06:02

+0

看下面的代码我在这里添加了一些验证。 – Developer 2014-09-26 16:53:40

回答

0

试试下面的代码它应该工作洼你想要的。 :)

<html> 
<head> 
<script> 
var userFlag =true; 
var passFlag = true; 
var msg = ""; 
function formIsValid(){ 
    checkUsername(); 
    checkPassword(); 
    if(passFlag && userFlag){ 

    return true; 
    } 
    else{ 
    alert (msg); 
    msg=""; 
    return false; 
    } 
} 


function checkUsername(){ 
    var name= document.forms["RegistrationForm"]["user"].value; 
    var nameLength =name.length; 
    if(name == ""){ 
    msg +="Please Enter a Username"; 
    userFlag = false; 
    } 
    else if (nameLength <8){ 
    msg +="The Username must be 8 characters"; 
    userFlag = false; 
    } 
} 

function checkPassword(){ 
    var password=document.forms["RegistrationForm"]["pass"].value; 
    var passwordLength =password.length; 
    if(password ==""){ 
    msg += " and Please Enter a Password"; 
    passFlag = false; 
    } 
    else if (passwordLength <8){ 
    msg += "and The Password must be 8 characters"; 
    passFlag = false; 
    } 
} 
</script> 
</head> 

<body> 
    <form name="RegistrationForm" onsubmit="return formIsValid()" action=""> 
     <h2>Registration</h2> 
     Username:<input type="text" name="user" size="20"/> (At least 8 characters)<br/> 
     <br/> 
     Password:<input type="text" name="pass" size="20"/> (At least 8 Characters)<br/> 
     <br/> 
     <input type="submit" value="Submit">  
     <input type="reset" name="reset" value="Clear"/> 
    </form> 
</body> 
</html> 
+0

这适用于多个警报,但如果最终成功,则不会显示任何消息。如果它创建了一条错误消息,那么在修复它之后,您将获得成功。 – planker1010 2014-09-26 17:12:34

0

或许真的有点像这样:

function checkPassword(errors){ 
    ... 
    if (password == "") { 
     errors.push("Please Enter a Password"); 
    } else if (passwordLength <8){ 
     errors.push("The Password must be 8 characters"); 
    } 

    return errors; 
} 

那么你的调用方法看起来是这样的:

function formIsValid(){ 
    var errors = []; 
    errors = checkUsername(errors); 
    errors = checkPassword(errors); 

    if (errors.length == 0) alert('win'); 
    else alert(errors.join('\r\n')); 
}