javascript - 即使未经验证,表单也始终会提交

标签 javascript php jquery forms validation

我想构建一个仅在验证后提交的表单(使用ajax,用于验证和提交)。

从我现在所拥有的来看,它总是提交。它显示字段不正确的消息,但仍然将空字段插入数据库。

知道如何在验证后插入它吗?

谢谢

<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/style.css">

<meta charset="utf-8">
<title>Form</title>
</head>
<script type="text/javascript" src="js/validate.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>


<body>
<div id="wrap">
<table>
<td>
    <form name="form">
        <tr>
        <p class="names">Voornaam:</p> <p><input type="text" name="voornaam" id="voornaam"></p>
        </tr>
        <tr>
         <p class="names">Achternaam:</p> <p><input type="text" name="achternaam" id="achternaam"></p>
        </tr>
        <tr>
         <p class="names">Telefoonnummer:</p> <p><input type="text" name="telefoonnummer" id="telefoonnummer"></p>
        </tr>
        <tr>
         <p class="names">Emailadres:</p> <p><input type="text" name="email" id="email"></p>
        </tr>
        <tr>
          <input class="knop" type="submit" name="insert" value="Opsturen" id="insert">
        </tr>
    </form>
</td>
</table>
<br>
<div id="berichten">

</div>

<script>
var validator = new FormValidator('form', [{
    name: 'voornaam',
    display: 'Voornaam',    
    rules: 'required'
}, {
    name: 'achternaam',
    display: 'achternaam', 
    rules: 'required'
},{
    name: 'telefoonnummer',
    display: 'telefoon', 
    rules: 'required|numeric'
},{
    name: 'email',
    display: 'email', 
    rules: 'required|valid_email'
}], function(errors, event) {
    var berichten = document.getElementById('berichten');

    berichten.innerHTML = '';

    if (errors.length > 0) {
        for (var i = 0, l = errors.length; i < l; i++) {
            berichten.innerHTML += errors[i].message + '<br>';
        }

    }

});
</script>
<script type="text/javascript">
    $(function(){
        $('#insert').click(function(){
            var voornaam = $('#voornaam').val();
            var achternaam = $('#achternaam').val();
            var telefoonnummer = $('#telefoonnummer').val();
            var email = $('#email').val();

            $.post('action.php',{action: "submit", voornaam:voornaam, achternaam:achternaam, telefoonnummer:telefoonnummer, email:email},function(res){
                $('#result').html(res);
            });
            document.getElementById('berichten').innerHTML = 'Verstuurd!';   
        });

    });
</script>

</div>
</body>
</html>

最佳答案

这是因为,即使我们的 JavaScript 验证有错误,您的 submit 按钮也能正常工作。

您应该在函数中添加一个return false以阻止它提交表单。

此外,还应考虑错误计数。

所以,更新后的代码:

    <script type="text/javascript">
        $(function(){
            $('#insert').click(function(){
                var voornaam = $('#voornaam').val();
                var achternaam = $('#achternaam').val();
                var telefoonnummer = $('#telefoonnummer').val();
                var email = $('#email').val();


if (errors.length > 0) {
            for (var i = 0, l = errors.length; i < l; i++) {
                berichten.innerHTML += errors[i].message + '<br>';
    return false;
            }
}                $.post('action.php',{action: "submit", voornaam:voornaam, achternaam:achternaam, telefoonnummer:telefoonnummer, email:email},function(res){
                    $('#result').html(res);
                });
                document.getElementById('berichten').innerHTML = 'Verstuurd!';
      return false;
            });

        });
    </script>

关于javascript - 即使未经验证,表单也始终会提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21087969/

相关文章:

javascript - 在 Ajax 加载的 Material 上绑定(bind)点击事件

javascript - 按钮 onclick Javascript 函数失败,但函数有效

javascript - 为什么 Internet Explorer 不能一致地触发提交事件?

php - 更新多个用户的表

php - TCPDF 不同边的特定边框

javascript - 数据表行未定义(DataTables.js)

javascript - javascript在spring应用程序中访问属性文件中的值的最佳方式

php - XDebug 探查器不在 apache 中写入文件

javascript - 如何验证表单 Either 或 OR 中的单选按钮字段?

jquery - 从url中获取hash值