jQuery验证:表单总是有效的问题

时间:2013-10-13 02:06:10

标签: javascript php jquery ajax validation

我正在尝试在提交到服务器之前进行表单验证。我正在使用jquery.validate插件 (JQuery validation plugin page) 我面临的问题是,无论我在表单字段中键入什么,验证总是成功,我双重检查所有内容对文档和样本通过电线,不知道为什么我得到这种行为。 这个表单是通过jquery ajax加载的:

$.ajax({
    url: "mypage.php",
    type: "POST",
    cache: false,
    success: function(cont){
        $("body").append(cont);
    }
});

这里我给你看mypage.php代码

<script src="js/jquery.validate.min.js"></script>
<script type="text/javascript">

$(document).ready(function () {

    $("#frmParticipante").validate({
        rules: { 
            nombre: {  required: true  } ,
            email: { required: true, email: true },
            ci: { required: true}
        }
    });

    $("#frmParticipante").submit(function(e){
        e.preventDefault();  
        if($(this).valid()){
            loadpop("ganaste.php");
        }
    else
        loadpop("perdiste.php");    

    });
});


</script>

<div id="pop_terminaste" class="pop_mensaje ingresardatos animated fadeInDown">
    <div id="infopop">
        <div id="lady"> <img src="images/terminaste1.jpg" width="453" height="626" /> </div>
        <div id="dato">
            <p class="txt1">¡Terminaste la trivia!</p>
            <p class="txt2">Ahora solo te falta completar tus datos para conocer el resultado.</p>
            <p class="txt3">Si ha cargado anteriormente sus datos, ingresar solo su cédula.</p>
            <form action="" id="frmParticipante" class="form">
                <fieldset>
                    <label for="nombre"><img src="images/ico_nombre.png" alt="ico_nombre" /></label>
                    <input type="text" placeholder="Nombre y Apellido" id="nombre">
                </fieldset>
                <fieldset>
                    <label for="email"><img src="images/ico_email.png" alt="ico_email" /></label>
                    <input type="text" placeholder="Email" id="email">
                </fieldset>
                <fieldset>
                    <label for="ci"><img src="images/ico_ci.png" alt="ico_ci" /></label>
                    <input type="text" placeholder="C.I" id="ci">
                </fieldset>
                <p class="msg error">Favor verificar los datos ingresados.</p>                
                <input type="submit" value="VER RESULTADOS" />                    
            </form>
        </div>
    </div>
</div>

由于

1 个答案:

答案 0 :(得分:6)

我很确定验证库需要名称属性,而不关注id属性。您应该将您的id attr更改为name,或者只添加具有相同值的name属性...例如:

<input type="text" placeholder="Nombre y Apellido" id="nombre" name="nombre">

这是一个小提琴,表明它有效http://jsfiddle.net/7WTvL/1/

除了名称之外,您可能还需要在要加载表单的页面的头部加载validate.js库,然后在ajax请求的.done()中运行validate。

<script>
$.ajax({
    url: "mypage.php",
    type: "POST",
    cache: false
}).done(function(cont) {
    $("body").append(cont);
    $("#frmParticipante").validate({
        rules: { 
            nombre: {  required: true  } ,
            email: { required: true, email: true },
            ci: { required: true}
        }
    });
});
$("#frmParticipante").submit(function(e){
    e.preventDefault();  
    if($(this).valid()){
        loadpop("ganaste.php");
    }
    else
        loadpop("perdiste.php");    
});
</script>

再次......确保验证库已加载到您正在内容的页面上...它需要在您的ajax内容到达之前在页面上。