2014-04-01 25 views
0

javascript函數似乎沒有被調用,驗證被跳過並直接進入檢查頁面。 我需要在移動到預定目標(即check.jsp頁面)之前驗證表單元素。JSP動作和提交問題

我知道有更好的方法來驗證的形式,但我想知道如何把它做這樣一來,任何幫助表示讚賞:)

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <form name="validate" onsubmit="return validateall(this)" action="check.jsp" > 
      Username:<input type="text" name="uname"> 
      Password:<input type="password" name="pwd"> 
      Email:<input type="text" name="email"> 
      <input type="submit" value="Submit" name="Submit"> 
     </form> 
     <script> 
      function validateall(form) 
      { 
       var errlist=""; 
       <% out.println("The function was called"); %> 

       errlist+=valuname(form.uname); 
       errlist+=valpwd(form.pwd); 
       errlist+=valemail(form.email); 
       if(errlist!="") 
       { 
        alert("Some fields need to be corrected"); 
        return false; 
       } 
       alert("Sign Up successful"); 
       return true; 
      } 
      function valuname(fld) 
      { 
       var error="" 
       if(fld.value=="") 
       { 
        error+="Cannot leave username empty"; 
        fld.style.background='Red'; 
       } 
       var illegalChars=/\W/; 
       else if((fld.value.length>=5))||(fld.value.length<=15)) 
       { 
        error+="The username should be within 5 and 15 characters"; 
        fld.style.background='Red'; 
       } 
       else if(illegalChars.test(fld.value)) 
       { 
        fld.style.background='Red'; 
        error+="No illegal characters!"; 
       } 
       return error; 

      } 
       function valpwd(fld) 
      { 
       var error="" 
       if(fld.value=="") 
       { 
        error+="Cannot leave password empty"; 
        fld.style.background='Red'; 
       } 
       var illegalChars=/[\W_]/; 
       else if((fld.value.length>=7))||(fld.value.length<=15)) 
       { 
        error+="The username should be within 5 and 15 characters"; 
        fld.style.background='Red'; 
       } 
       else if(illegalChars.test(fld.value)) 
       { 
        fld.style.background='Red'; 
        error+="No illegal characters!"; 
       } 
       return error; 
      } 
       function valemail(fld) 
      { 
       var error="" 
       if(fld.value=="") 
       { 
        error+="Cannot leave password empty"; 
        fld.style.background='Red'; 
       } 
       var illegalChars=/[\(\)\<\>\,\;\:\\\"\[\]]/; 

       else if(illegalChars.test(fld.value)) 
       { 
        fld.style.background='Red'; 
        error+="No illegal characters!"; 
       } 
       return error; 
      } 
     </script> 

    </body> 
</html> 
+0

是否有任何鏈路?如果不行,我會部署並檢查。 – ambarox

+0

檢查我的答案@ambarox –

+0

謝謝,我會檢查出來。 – ambarox

回答

0

您可以停止sefault提交這樣的:

$(document).ready(function() { 
    $('form').on('submit', function(e){ 
    // validation code here 
    if(!valid) { 
     e.preventDefault(); 
    } 
    }); 
}); 

另一個實施例從Jquery.com

<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>submit demo</title> 
<style> 
p { 
margin: 0; 
color: blue; 
} 
div,p { 
margin-left: 10px; 
} 
span { 
color: red; 
} 
</style> 
<script src="//code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 
<p>Type 'correct' to validate.</p> 
<form action="javascript:alert('success!');"> 
<div> 
<input type="text"> 
<input type="submit"> 
</div> 
</form> 
<span></span> 
<script> 
$("form").submit(function(event) { 
if ($("input:first").val() === "correct") { 
$("span").text("Validated...").show(); 
return; 
} 
$("span").text("Not valid!").show().fadeOut(1000); 
event.preventDefault(); 
}); 
</script> 
</body> 
</html