2013-03-14 1 views
0
<?PHP 
$attributes = array('class' => "profile_form", 'id' => "profile_form",'name'=>"profile_form"); 
echo form_open_multipart("$form_action",$attributes); 
?> 
<LABEL for='email'>E-Mail</LABEL> 
<INPUT type='text' id='email' name="email" class="w200" value='<?PHP echo $email;?>' remote="<?PHP echo base_url()."php/unique_email.php?id=$id"; ?>"> 
<DIV class='ca clr-lr'> 
<input type="submit" id="submitbutton" name="submitbutton" value="<?PHP echo $title;?>" class="pr mbutton"/> 
</DIV> 
</FORM> 

иJQuery Validate удаленная проверка работает только при изменении поля

rules: { 
     email: { 
      required:true, 
      email:true 
     } 
    } 

Это код, я использую, чтобы проверить поле электронной почты. Он отлично работает, если я изменил поле электронной почты или набрал новое значение, но если я просто отправлю форму, это даст мне ошибку. После краткого осмотра выяснилось, что кнопка отправки не включена в почтовые данные, если я не редактирую поле электронной почты.

Что я делаю неправильно, пожалуйста, помогите.

И вот мой код контроллера, он может помочь расширить область отладки. Я проверяю, является ли submitbutton частью данных сообщения или нет.

if($this->input->post('submitbutton') !== false){ 
     if ($this->form_validation->run('admin_profile_form') == FALSE){ 
      $form=(array)$this->input->post(); 
      $data=array_merge($form,$data); 
     }else{ 
      //database fields 
      $database = array(
       'first_name' => $this->input->post('first_name'), 
       'last_name' => $this->input->post('last_name'), 
       'email' => $this->input->post('email'), 
       'phone' => $this->input->post('mobile') 
      ); 
      $user_id=$user->id; 
      $this->db->where('id',$user_id); 
      $this->db->update('users',$database); 
      $this->session->set_flashdata('message_type', 'info'); 
      $this->session->set_flashdata('message', 'Profile updated'); 
      redirect($this->homepage); 
      return; 
     } 
    } 

И, наконец, решение, предложенное Фабио Антунесом, сработало.

Я изменил правила следующим образом и удалить встроенный удаленный от поля ввода

 email: { 
      required:true, 
      email:true, 
      remote: { 
       url: "php/unique_email.php", 
       async: false, 
       type: "post", 
       data: { id: $('#edit_id').val() } 
      } 
     } 

ответ

-1

попробовать эту настройку

$(/*your form*/).validate({ 
    onsubmit: true 
}) 
+0

Пожалуйста, не обращайте на меня внимания, но что это будет делать. Я прошу убедиться, что это не будет другие части моего кода. –

+0

Это всегда будет проверять вашу форму на отправке, я надеюсь, что это то, что вы хотите – Cris

+0

Это не сработало :( –

1

EDIT

Как вы сказали, что ваш код уже вы можете поместить это в свой файл js , вы должны использовать эту функцию $("#profile_form").validate({}), поэтому он v alidates по отправке и на KeyUp событие

<script> 
$().ready(function() { 

     // validate signup form on keyup and submit 
     $("#profile_form").validate({ 
    rules: { 
     email: { 
      email: true 
     } 
    }, 
    messages: { 
     email: { 
      email: "Please provide a valid email" 
     } 
    } 
}); 
}); 

Я заметил, что по вашему мнению, у вас есть это

<INPUT type='text' id='email' name="email" class="w200" value='<?PHP echo $email;?>' remote="<?PHP echo base_url()."php/unique_email.php?id=$id"; ?>"> 

Вместо поставить это

<INPUT type='text' id='email' name="email" class="w200" value='<?PHP echo $email;?>' remote="<?PHP echo base_url()."php/unique_email.php?id=".$id; ?>"> 

Если вы обратите внимание, что ваш $ id находился внутри строки

+0

Дело в том, что мой код javascript находится в файле .js, поэтому я использовал удаленный атрибут. Использование кепок для тегов php и html - это то, что мне удобно, ничего особенного. Ваш код выглядит как другая версия моей, хотя я не уверен в типе: post. Не могли бы вы указать на ошибку в моем коде, это будет очень признательно. Заранее спасибо.Мой код работает отлично, если я ввожу что-то в поле, это вызывает проблему, когда я отправляю форму даже с допустимым значением, не набрав ничего в поле (т. Е. Пуском удаленной проверки) –

+0

Я отредактировал свой ответ –

+0

Обе версии, т.е. встроенная переменная в строке или иначе будет производить тот же вывод в браузере. Но так или иначе я пробовал ваши предложения, но все же теперь удачи. Я добавил свой код контроллера, отвечающий за обработку формы моих моих вопросов. Может быть, я делаю что-то не так. –