onsubmit的功能不起作用

时间:2016-12-27 10:38:59

标签: javascript html forms validation

我在发帖之前搜索过很多科目,但我没有找到任何有趣的东西。所以,如果我没有看到另一篇文章作为我的工作答案,我很抱歉复制......

所以,这是我的问题:我的表单,当我想提交它时,就是什么都不做。我准备了错误消息或验证消息,但在提交表单后我看不到它们......

这是我的HTML:

<form method="POST" action="#contact" onsubmit="return verifForm(this)">
    <div class="group">
        <?php
                        if(!empty($_POST['email'])) {
                            echo "<input id='contact-email' name='email' type='email' required onblur='verifEmail(this)' value='".$_SESSION['email']."'>";
                        }else {
                            echo "<input id='contact-email' name='email' type='email' required onblur='verifEmail(this)'>";
                        }
                    ?>
        <span class="bar"></span>
        <label>Email</label>
    </div>
    <div class="group">
        <?php
                        if(!empty($_POST['textarea'])) {
                            echo "<textarea name='textarea' id='contact-textarea' cols='30' onblur='verifTextarea(this)' rows='1'>".$_SESSION['textarea']."</textarea>";
                        }else {
                            echo "<textarea name='textarea' id='contact-textarea' cols='30' onblur='verifTextarea(this)' rows='1'></textarea>";
                        }
                    ?>
        <span class="bar"></span>
        <label>Message</label>
    </div>
    <div class="group">
        <span id="erreurjs" class="form-text text-muted"></span><br />
        <input class="contact-btn" type="submit" value="Envoyer">
    </div>
</form>

这是我的JS:

function verifForm(f) {
    var emailOk = verifEmail(f.email);
    var textareaOk = verifTextarea(f.textarea);

    if (emailOk && textareaOk) {
        return true;
        document.getElementById('contact-message').className('contact-message-true').innerHTML('OK');
    } else {
        return false;
        document.getElementById('contact-message').className('contact-message-false').innerHTML('NOT OK');
    }
}

(其他功能正在运作)

基本上,此代码建议访问者输入他的电子邮件和他的消息。如果电子邮件无效,则他无法提交表单,文本区域的内容相同(值必须介于2和255之间)。 但就目前而言,验证电子邮件和文本区域是有效的,但似乎verifForm(f)无法正常工作......

PS:对不起,我是法国人!

3 个答案:

答案 0 :(得分:0)

回归是你在功能上做的最后一件事。它将结束你的功能。

所以,回归后不要放任何东西,因为它什么都不做。

要解决您的问题,只需交换returndocument.getElementById

试试这个:

function verifForm(f) {
    var emailOk = verifEmail(f.email);
    var textareaOk = verifTextarea(f.textarea);

    if(emailOk && textareaOk){
        document.getElementById('contact-message').className('contact-message-true').innerHTML('OK');
        return true;
    }else{
        document.getElementById('contact-message').className('contact-message-false').innerHTML('NOT OK');
        return false;
    }
}

您也可以这样做

function verifForm(f) {
    var emailOk = verifEmail(f.email);
    var textareaOk = verifTextarea(f.textarea);

    if(emailOk && textareaOk){
        document.getElementById('contact-message').className('contact-message-true').innerHTML('OK');
        return true;
    }

    // two command under this line will not be execute if you condition above is true. Your function will finish there.
    document.getElementById('contact-message').className('contact-message-false').innerHTML('NOT OK');
    return false;
}

仅供参考:您的HTML中没有标识为contact-message

的元素

答案 1 :(得分:0)

在你的JS代码中,你必须在文档错误函数之后放回。喜欢这个

function verifForm(f) {
    var emailOk = verifEmail(f.email);
    var textareaOk = verifTextarea(f.textarea);
    if (emailOk && textareaOk) {
        document.getElementById('contact-message').className('contact-message-true').innerHTML('OK');
        return true;
    } else {
        document.getElementById('contact-message').className('contact-message-false').innerHTML('NOT OK');
        return false;
    }
}

答案 2 :(得分:0)

哦,谢谢你们,我是个白痴! ^^

所以我把返回放在最后一个位置,我也改变了以下代码的代码,现在它正常工作!

这是我目前的代码,如果它可以帮助其他人:

HTML:

<form method="POST" action="#contact" onsubmit="return verifForm(this)">
                <div class="group">
                <?php
                    if(!empty($_POST['email'])) {
                        echo "<input id='contact-email' name='email' type='email' required onblur='verifEmail(this)' value='".$_SESSION['email']."'>";
                    }else {
                        echo "<input id='contact-email' name='email' type='email' required onblur='verifEmail(this)'>";
                    }
                ?>
                    <span class="bar"></span>
                    <label>Email</label>
                </div>
                <div class="group">
                <?php
                    if(!empty($_POST['textarea'])) {
                        echo "<textarea name='textarea' id='contact-textarea' cols='30' onblur='verifTextarea(this)' rows='1'>".$_SESSION['textarea']."</textarea>";
                    }else {
                        echo "<textarea name='textarea' id='contact-textarea' cols='30' onblur='verifTextarea(this)' rows='1'></textarea>";
                    }
                ?>
                    <span class="bar"></span>
                    <label>Message</label>
                </div>
                <div class="group">
                <?php
                    if(!empty($message)){
                        echo $message;
                        $message = '';
                    }else {
                        echo '<span id="contact-message"></span><br />';
                    }

                ?>

JS:

function verifForm(f) {
var emailOk = verifEmail(f.email);
var textareaOk = verifTextarea(f.textarea);

if(emailOk && textareaOk){
    document.getElementById('contact-message').className = 'contact-message-true';
    document.getElementById('contact-message').innerHTML = 'Votre message a bien été envoyé';
    return true;
}
document.getElementById('contact-message').className = 'contact-message-false';
document.getElementById('contact-message').innerHTML = 'Veuillez remplir tous les champs correctement.';
return false;

}