Postanowilem sobie zrobic walidacje wybranych pol w formularzu. Uzylem onChange, czyli gdy uzytkownik wpisze cos, a bedzie to zle to wyswietli sie blad nad formuarzem w divie.
js
<?php function check_profile(pole, div) { req = mint.Request(); req.method = "post"; req.AddParam(pole, $(pole).value); req.OnSuccess = function () { document.getElementById(div).innerHTML = req.responseText; } req.Send("profile.php?action=save"); } ?>
html (jeszcze ze smartami)
<form action="profile.php?action=save" method="post" name="form" id="form"> <div class="page_content"> <div class="edit_profile"> {foreach from=$profile item=pr} <table width="100%" cellpadding="1" cellspacing="2"> <tr> <td width="62%"> <label> <input name="email" type="text" id="email" value="{$pr.email}" size="22" maxlength="60" onChange="check_profile('email', 'c_email')" /> </label> </tr> <tr> <td> <label> <input name="pass1" type="password" id="pass1" size="22" maxlength="50" onChange="check_profile('pass1', 'c_pass')"/> </tr> <tr> </tr> </table> ........
Niestety nie mam teraz dostepu do pliku php, ale jest on na 100%, bo bez ajaxa dzialal jak nalezy. Sprawdza na zasadzie if(cos tam zle) echo blad.
A wogole caly problem tkwi w tym, ze czy wypelnie pole email czy nie, to zawsze gdy zejde nizej i wypelnie hasla i zgadzaja sie ze soba to w divie od bledow z hasel wyskakuje moj blad: "Nie podano emaila" (sprawdza na zasadzie if(!isset($_POST['email'])) echo Nie podano emaila), chodz ten blad nie ma nic wspolnego z haslami (tak samo jest jak podam inne pola). W js przesylam tylko pole, wiec na moj chlopski rozum w skrypcie php powinno sie wykonac to gdzie jest $_POST['...'], a wiec skad tam inne pole. Jak na moje oko to wina js. Jesli tak, to jak go zmodyfikowac, zeby sprawdzal tylko w php gdzie jest bezposrednie odwolanie do danego pola.