我有一个带有3个文本输入的表单,该函数具有在提交时验证它们的功能,如下所示:

<form action="" method="post" onSubmit="return checkForm(this.form)">


和checkForm():



var pattern_name = /^([a-zA-Z\u00C0-\u00FF]+[ '-]?[a-zA-Z\u00C0-\u00FF]+){1,30}$/;
var pattern_email = /^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$/;

function checkForm(){
	$("form.formul :input[type=text]").each(function(){
		var input = $(this);
		var value = input.val();
		if (value=="") {
			console.log("l'input est vide");
			return false;
		}
		else{
			console.log(value);
			return false;
		}
	});
}

.info-user{
    display: flex;
    flex-direction: column;
}

.info-user input{
    width: 50%;
    height: 30px;
    margin: 10px 0;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="" method="post" onSubmit="return checkForm(this.form)">
    <div class="civilite">
        <input type="radio" name="civ" value="Mme." id="mme" class="inline-radio"/>
        <label for="mme" class="civ-radio">Mme</label>
        <input type="radio" name="civ" value="Mlle." id="mlle" class="inline-radio"/>
        <label for="mlle" class="civ-radio">Mlle</label>
        <input type="radio" name="civ" value="M." id="m" class="inline-radio"/>
        <label for="m" class="civ-radio">M</label>
    </div>
    <div class="info-user">
        <input type="text" name="prenom" placeholder="Prénom"/>
		<input type="text" name="nom" placeholder="Nom"/>
		<input type="text" name="email" placeholder="E-mail"/>
		<input type="image" name="image" value="submit" id="cta" />
    </div>
</form>





但是在提交时验证表单时,控制台会说:“ l'input est vide”并重新加载表单...

我想停止验证,直到表格有效为止

如果需要将虚假语句发送到checkForm函数,是否必须通过.each函数传输虚假语句?

像这样?



function checkForm(e){
    if(e == false){
        return false;
    }
	$("form.formul :input[type=text]").each(function(){
		var input = $(this);
		var value = input.val();
		if (value=="") {
			console.log("l'input est vide");
			checkForm(false);
		}
		else{
			console.log(value);
		}
	});
}





这有点奇怪吗?

最佳答案

您应该在checkForm中返回验证结果。
尝试这个:

function checkForm(){
    var isValid = true;
    $("form.formul :input[type=text]").each(function(){
        var input = $(this);
        var value = input.val();
        if (value=="") {
            // input is required!
            console.log("l'input est vide");
            isValid = false;
        }
        else{
            console.log(value);
            return false;
        }
    });
    return isValid;
}

09-16 08:02