2011-11-04 77 views
0

我正在学习更多关于PHP/Javascript,试图建立一个基本的网站。我已经完成了所有的工作,但是没有验证注册和什么。我正在尝试使用Javascript在提交之前验证表单,但它不适用于我。这里是我的网页:提交到php文件之前Javascript没有运行

<script language="JavaScript" type="text/javascript"> 
OK = false; 
function validateEmail() { 
    var x = document.forms["form1"]["myemail"].value; 
    var atpos = x.indexOf("@"); 
    var dotpos = x.lastIndexOf("."); 
    if(atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) { 
     alert("Not a valid e-mail address"); 
     return false; 
    } 
} 

function notShortUsername() { 
    var x = document.forms["form1"]["myusername"].value; 
    if(x.value.length < 6) { 
     // set the focus to this input 
     OK = false; 
    } 
    OK = true; 
} 

function notShortPassword() { 
    var x = document.forms["form1"]["mypassword"].value; 
    if(x.value.length < 6) { 
     alert(helperMsg); 
     elem.focus(); 
     // set the focus to this input 
     OK = false; 
    } 
    OK = true; 
} 

function validate() { 
    notShortUsername(); 
    notShortPassword(); 
    validateEmail(); 

    if(OK) { 
     form.submit(); 
     return true; 
    } else { 
     //do something else 
     alert("You did it wrong!"); 
     return false; 
    } 
} 
</script> 

<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> 
    <tr> 
    <form name="form1" method="post" action="registervalidation.php" onsubmit="return validate"> 
    <td> 
     <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> 
     <tr> 
      <td colspan="3"><strong>Member Login </strong></td> 
     </tr> 
     <tr> 
      <td width="78">Username</td> 
      <td width="6">:</td> 
      <td width="294"> 
      <input name="myusername" type="text" id="myusername" /> 
      </td> 
     </tr> 
     <tr> 
      <td>Password</td> 
      <td>:</td> 
      <td> 
      <input name="mypassword" type="password" id="mypassword" /> 
      </td> 
     </tr> 
     <tr> 
      <td>Email</td> 
      <td>:</td> 
      <td> 
      <input name="myemail" type="text" id="myemail"> 
      </td> 
     </tr> 
     <tr> 
      <td>&nbsp;</td> 
      <td>&nbsp;</td> 
      <td> 
      <input type="submit" name="Submit" value="Complete Registration"> 
      <input type="submit" name="Submit" value="Cancel"> 
      </td> 
     </tr> 
     </table> 
    </td> 
    </form> 
    </tr> 
</table> 

我用这个也试过:http://docs.jquery.com/Plugins/Validation

问题与它是当项目失去焦点,仍然反正提交PHP它不会验证。

+3

请将问题简化为最小形式。 – vemv

+3

我希望你没有在客户端验证*。 – NullUserException

+0

不,我也在PHP上做了一些验证,将其返回到注册页面,但是我希望在运行php之前检查格式的客户端验证。 –

回答

4
onsubmit="return validate();" 

待办事项忘记();

+0

是的,这并没有解决它。它仍然运行到PHP。 –

+1

@SpencerCole试试这个:'onsubmit =“validate(); return false;”' – Neal

+0

不,仍然运行到php。 –

0

改变这一点:

var x = document.forms["form1"]["myusername"].value; 
if(x.value.length < 6) { 

到:

var x = document.forms["form1"]["myusername"].value; 
if(x.length < 6) { 

这:

var x = document.forms["form1"]["mypassword"].value; 
if(x.value.length < 6) { 

到:

var x = document.forms["form1"]["mypassword"].value; 
if(x.length < 6) { 

在每种情况下,var x已经包含值,以便直接获得的长度由x.length

0

测试你的验证函数形式外提交:

<a href="#" onclick="validate();">test</a> 

您会在控制台中看到一个错误,让您知道x未定义。

Uncaught TypeError: Cannot read property 'length' of undefined

所以脚本停止执行并且从不返回false,它允许表单发布。

相关问题