I also have this problem...

On 27 Nov, 20:48, Anna P <[EMAIL PROTECTED]> wrote:
> Hello! I have a register form with several fields, which I want to
> validate in "real-time" usingajax. Let's say that form has 4 fields:
> login_name, pass, confirm_pass, email.
>
> Validation rules in model User are: login - from 3 to 20 letters, pass
> - the same, email - VALID EMAIL.
>
> What I want is to code that kind of form:
> When user enters login_name, theajax->observeField calls action with
> validating login_name field. When I enter login_name and go to another
> field (or better - without clicking outside the input),ajaxvalidates
> that field and puts either "tick" or "cross" image with error message,
> if field didn't pass validation. I want to validate each field without
> submiting the form.
>
> I tried this way:
>
> form view:
> <?php echo $form->create('User',array('url'=>'/users/register'))?>
>
>       <?php echo $form->text('login_name',array('id'=>'login_name'));?
>
>       <?php echo $ajax->observeField('login_name',array('url' => '/
> users/verify_field/login_name','update' => 'login-error')); ?><br/>
>         <span id="login-error"><?php echo $form->error
> ('login_name','Wrong login');?></span>
>       <?php if(isset($login_error)):?><span class="error-message"><?
> php echo $login_error;?></span><?php endif;?></div>
>     <div class="clean"></div>
>
> ....(the same with other fields, instead "login_name" there is:
> "pass","confirm_pass","email").
>
> function verify_field in controller:
>
> function verify_field($field) {
>     $this->layout = 'blank-nohtml';  //blank html
>                 if(!empty($this->data['User'][$field])) {
>                         $this->User->set($this->data);
>                         if($this->User->validates() && !($field=='login_name' 
> && $this->User->find("login_name='".$this->data['User']['login_name']."'"))) {
>
>         $img="tick";
>       } else {
>         if($field=='login_name' && $this->User->find("login_name='".
> $this->data['User']['login_name']."'")) {
>           $this->set('login_error',ERROR_LOGIN_USED);
>         }
>         $this->validateErrors($this->User);
>         $img="cross";
>       }
>                         $this->set('img',$img);
>       }
>
> }
>
> verify_field view:
>
> <?php echo $html->image('icons/'.$img.'.png')?>&nbsp;
> <?php echo $form->error('login_name',ERROR_LOGIN);?>
> <?php if(isset($login_error)):?><span class="error-message"><?php echo
> $login_error;?></span><?php endif;?>
>
> But this is validation for only one field. How to make it better?
>
> And the most important question: when I verify filed like this, I do
> get correct image (tick if validation passed, cross if not), but the
> $form->error doesn't show anything if the field didn't pass
> validation.
>
> For any help I would be very greatful. If you know anyajaxform field
> validation tutorials - let me know.
> Kisses :-)

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to