2016-09-04 42 views
0

我有一个HTML表单,其中包含一些字段和一个验证javascript的验证字段,我的问题是js不会返回任何内容,并且虽然字段填充不属性,但是提交会发送。Javascript表单验证不会返回任何东西

这里我的代码示例:

HTML

<form method="post" action="action.php" onsubmit="return validate_form();"> 
     <table> 
      <tr> 
      <td> 
       <label class="standard_text"> 
        E-mail 
       </label> 
      </td> 
      <td><input class="textarea" required type="email" name="mail" id="mail" placeholder="E-mail"></label></td> 
      <td><div class="check_icon icon_yes" style="display:none" id="mail_ok_icon"></div></td> 
      <td><div class="check_icon icon_no" style="display:none" id="mail_no_icon"></div></label></td> 
      <td><div class="check_message" style="display:none" id="mail_message"><label class="important_text">The email format is not correct!</label></div></td> 
      </tr> 
     </table> 
     <input class="button_submit" type="submit" name="send_form" value="Register"/> 
</form> 

的Javascript

function validate_form(){ 

    //email var 
    var mail = document.getElementById("mail").value; 
    var mail_ok_icon = document.getElementById("mail_ok_icon"); 
    var mail_no_icon = document.getElementById("mail_no_icon"); 
    var mail_message = document.getElementById("mail_message"); 

    //email format check 
    if ((/(.+)@(.+){2,}\.(.+){2,}/.test(mail)) || mail=="" || mail==null) { 
     mail_no_icon.style.display="block"; 
     mail_message.style.display="block"; 
     return(false); 

    } else { 
     mail_ok_icon.style.display="block"; 
    } 
} 

所以我想,以显示这取决于JavaScript的检查,也元素如果对所有字段进行检查,试图不让用户发送信息 不正确。

我错过了什么?

感谢

+1

的'else'部分不返回任何东西。这将使该函数隐式返回'undefined'。 – vlaz

回答

0

我把它用下面的代码工作 - :

在原代码的电子邮件输入有requiredtype="email"从未叫初审的JavaScript代码。

<html> 
<head> 
    <script type="text/javascript" src="test.js"></script> 
</head> 
<body> 
    <form method="post" action="action.php" onsubmit="return validate_form();"> 
     <table> 
      <tr> 
      <td> 
       <label class="standard_text"> 
       E-mail 
       </label> 
      </td> 
      <td><input class="textarea" name="mail" id="mail" placeholder="E-mail"></label></td> 
      <td><div class="check_icon icon_yes" style="display:none" id="mail_ok_icon"></div></td> 
      <td><div class="check_icon icon_no" style="display:none" id="mail_no_icon"></div></label></td> 
      <td><div class="check_message" style="display:none" id="mail_message"><label class="important_text">The email format is not correct!</label></div></td> 
     </tr> 
     </table> 
     <input class="button_submit" type="submit" name="send_form" value="Register"/> 
    </form> 
</body> 
</html> 

现在这里是JS代码 - :

function validate_form() { 
    //email var 
    var mail = document.getElementById("mail").value; 
    var mail_ok_icon = document.getElementById("mail_ok_icon"); 
    var mail_no_icon = document.getElementById("mail_no_icon"); 
    var mail_message = document.getElementById("mail_message"); 

    //email format check 
    if (!(/(.+)@(.+){2,}\.(.+){2,}/.test(mail)) || mail=="" || mail==null) { 
     mail_no_icon.style.display="block"; 
     mail_message.style.display="block"; 
     console.log('hi');   
     return false; 
    } else { 
     mail_ok_icon.style.display="block"; 
     return true; 
    } 
} 
+0

@AleixGalletSegarra @nitin因为这些都是HTML标准,所以删除'type =“email”'或'required'是不可取的,即使javascript被禁用,也可以按预期工作。您只需在正则表达式检查和return语句之前更改'!'的js逻辑以更正您的代码。 –

+0

@AleixGalletSegarra如果工作,那么你可能会接受答案。 –

+0

谢谢,请试试这个;) @Nitin Misra“!记录下那些名声低于15的演员的投票,但不会改变公开显示的帖子得分” –