我正在尝试在提交到服务器之前进行表单验证。我正在使用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>
由于
答案 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内容到达之前在页面上。