jQueryとAJAXを使用してフォームを送信すると、私のPHPファイルはすべての検証を行い、2つの応答のうちの1つを返します。
成功した場合:
<div id='formres'>1</div>
<div id='formresposta'>
<h2>SUCESSO</h2>
</div>
またはこれ(送信されていない、エラーが見つかりました):
<div id='formres'>0</div>
<ul>
<li>errnome</li>
<li>errmail</li>
<li>errmsg</li>
</ul>
私がこれまでに書いたjQueryは、エラーが見つかった場合にアクションを実行することを除いて、私が望むことを何とか実行できます...ここにあります:
$("#formcontacto").submit(function () {
var dados = $(this).attr("action");
$.post(dados,{
nome:$(".nome").val(),
email:$(".email").val(),
telefone:$(".telefone").val(),
mensagem:$(".mensagem").val()
},
function (dados) {
resultado = $(dados).filter(function(){ return $(this).attr("id") == "formres"}).text();
alert(resultado);
if(resultado == 1){
$("#formcontacto").fadeOut("slow");
$("#formcontainer").html(dados).fadeIn(3000);
}else{
alert(dados);
var erros = $(dados).filter(function(){ return $(this).is("li") }).text();
alert(erros);
erros.each(function() {
if ($(this).text() == 'errnome'){ $('.nome').css({'border':'1px solid #a00','background-color':'#ffbaba','color':'#222'}); }
if ($(this).html() == 'errmsg'){ $('.mensagem').css({'border':'1px solid #a00','background-color':'#ffbaba','color':'#222'}); }
if ($(this).html() == 'errmail'){ $('.email').css({'border':'1px solid #a00','background-color':'#ffbaba','color':'#222'}); }
})
}
});
return false;
})
.is( "li")が機能しない理由がわかりません。また、これを非常に複雑にしていると感じています...手がかりはありますか?
前もって感謝します。