简体   繁体   English

Javascript 表单验证:表单在错误返回时提交:

[英]Javascript form validation: form is submited on false return:

When I'm trying to validate the form using Javascript it brings the alerts up as it should but the form gets submitted as nothing happened even though false is returned, the alert work only for the first time I press the submit button.当我尝试使用 Javascript 验证表单时,它会按照应有的方式发出警报,但即使返回 false 也没有发生任何事情提交表单,警报仅在我第一次按下提交按钮时起作用。 Could some one tell me what am I doing wrong:有人可以告诉我我做错了什么:

Javascript: Javascript:

 function checkForm() {

       var name, email, text;

        name =  document.contact.userName.value;
        email = document.contact.email.value;
        text =  document.contact.textarea.value;

        //document.write(name + " " + email + " " + text);

        if (name == "" || email =="" || text=="")    {

             alert("Please fill all fields before submitting!");
             return false;

        }else if (!looksLikeMail(email))     {

         alert("Please enter you real email!");
             return false;
        }else       {

             alert("Your feedback was sent, Thank you!");
             return true;
            }    
 }

function looksLikeMail(str)     {

              var lastAtPos = str.lastIndexOf('@');
              var lastDotPos = str.lastIndexOf('.');
              return ((lastAtPos < lastDotPos) && lastAtPos > 0 && str.indexOf('@@') == -1 && lastDotPos > 2 && (str.length - lastDotPos) > 2);
>        }

HTML: HTML:

<form name="contact" action="login" method="POST" onsubmit="checkForm()">
                <input type="hidden" name="page" value="feedback">
                <div data-role="fieldcontain">
                    <fieldset data-role="controlgroup" data-mini="true">
                        <label for="textinput1">
                            Name:
                        </label>
                        <input id="name" placeholder="Enter your full name" value="" type="text" name="userName"/>
                    </fieldset>
                </div>
                <div data-role="fieldcontain">
                    <fieldset data-role="controlgroup" data-mini="true">
                        <label for="textinput2">
                            Email
                        </label>
                        <input id="email" placeholder="Enter your email" value="" type="email" name="email" />
                    </fieldset>
                </div>
                <div data-role="fieldcontain">
                    <fieldset data-role="controlgroup">
                        <label for="textarea1">
                            Feedback
                        </label>
                        <textarea id="textarea" placeholder="Enter your text here" name="textarea"></textarea>
                    </fieldset>
                </div>
                <input type="submit" data-inline="true" data-theme="b" data-icon="check" data-iconpos="right" value="Submit" />
            </form>

Change改变

<form name="contact" action="login" method="POST" onsubmit="checkForm()">

to

<form name="contact" action="login" method="POST" onsubmit="return checkForm()">

The onsubmit will cancel the submission if your function returns false, but only if onsubmit will also return false.如果您的函数返回 false,则onsubmit将取消提交,但onsubmit也将返回 false。 So you have to pass the return value from checkForm() .所以你必须传递checkForm()的返回值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM