Hello! I have a register form with several fields, which I want to
validate in "real-time" using ajax. 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, the ajax->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), ajax validates
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 any ajax form 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 cake-php@googlegroups.com
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