阻止表单提交JS无法正常工作

时间:2017-04-20 09:18:21

标签: javascript forms submit

我想在提交之前检查一些表单值。所以我把它放到我的:

<form name="frmcontact" id="frmcontact" method="post" action="<?php echo($action);?>" class="forms" onsubmit="return checkContactsFields()">

这是我的JS功能:

function checkContactsFields(){
    var newIdValue = document.forms["frmcontact"]["new_id"].value;
    if(newIdValue !== 'ADRESSE NON IDENTIFIE'){
        var form = document.forms["frmcontact"].elements;
        for(var i = 0; i < form.length; i++) {
            if(form[i].name === 'street' || form[i].name === 'cp' || form[i].name === 'town'){
                if(form[i].value === ''){
                    console.log('ok');
                    document.getElementById('main_error_popup').style.display = 'table-cell';
                    if(form[i].name === 'street')
                        errorMsg = 'Voie';
                    else if(form[i].name === 'cp'){
                        errorMsg = 'Code Postal';
                    }else{
                        errorMsg = 'Ville'
                    }
                    document.getElementById('main_error_popup').innerHTML = 'Le champ ' + errorMsg + ' est vide';
                    return false;
                }
            }
        }
        return true;
    }
    return true;
}

我遇到的问题是,即使返回false语句,表单也会提交..

知道原因吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

preventDefault添加到功能&amp; submit使用ajax的表单

在html中

onsubmit="return checkContactsFields(event)"

在js

function checkContactsFields(e){
    e.preventDefault()
}

答案 1 :(得分:1)

如果我,铬的快速测试似乎有用 只是做:

function checkContactsFields(){
   alert("I won't submit");
   return false;
}

https://plnkr.co/edit/yA3hVlDtfUGxSCceqPMY?p=preview

如果您的javascript在执行期间抛出错误,则仍会发生提交。

你的HTML是什么样的?