2013-08-15 2 views
0

Здесь представлены две формы fregister и регистр. В первой форме я беру ввод имени, имени пользователя и проверяя доступность имени пользователя, нажав кнопку Проверить идентификатор пользователя. Если имя пользователя недоступно, я показываю сообщение с помощью php и хочу показать это сообщение пользователю с полями он заполнял раньше.Оставайтесь на той же странице, не перезагружайте

<?php RegFormCrAndValid($name,$username,$email) {?> 
    <form name="fregister" method="post"> 
     <table> 
     <tr><td>Name</td> 
     <td><input type="text" id="name" name="name" value ="<?php echo $name;?>" onChange="ValidAllAlpha()" required></td> 
     <td><span id="ErrorName"></span></td></tr> 
     <tr><td>Username</td> 
     <td><input type="text" id="user" name="UsrText" value="<?php echo $user;?>" required onblur="SetNextElement()"></td> 
     <td><?php echo $_SESSION['ErrorUserMsg']?></td> <td><input type="submit" name="CheckUsr" value="Check User ID"></td> </tr> </form> 

Во второй форме, пользователь зарегистрирует здесь первая проверку наличия, а затем представление будет иметь место, нажав на register.In этой формы тоже, если пользователь успешно не зарегистрирован, то я хочу, чтобы показать сообщение с заполнением полей ,

<form name="register" method="post"> 
    <td style="display:none"><input type="text" id="fname" name="fname" required></td> 
    <td style="display:none"><input type="text" id="fuser" name="fuser" required></td> 
    <tr><td>Email</td> 
    <td><input type="email" id="email" name="email" value="<?php echo $email;?>" onChange="ValidateEmail()" required></td> 
    <td><span id="ErrorEmail"></span></td></tr> 
    <tr><td><input type="submit" name="submitForm" value="Submit" onClick="ValidationCheckOnSubmit('register');return false;"></td></tr> 
    </form> 
</body> 
</html> 

Две строки не отображается здесь, потому что они принимают значение имени и имени пользователя из формы fregister с помощью Javascript и отображение их.

JavaScript коды // валидация там, я здесь упомянуть код для передачи значений Fname и термоблока

function SetNextElement() 
       {   
         document.getElementById('fname').value = document.getElementById('name').value; 

       document.getElementById('fuser').value = document.getElementById('user').value; 
       } 
<?php }?> //RegFormCrAndValid($name,$username,$email) this function getting closed over here 

PHP кодирования

if(isset($_POST['CheckUsr'])) 
    { 
     if(IsUsernameAvail($_POST['UsrText'])) //IsUsernameAvai checking for the username availabilty return true if available as false 
     { 
      $_SESSION['ErrorUserMsg']="<font color=red>This Username Is Available</font>"; 
     } 
     else 
     { 
      $_SESSION['ErrorUserMsg']="<font color=red><--Username is not available</font>"; 
     } 

    } 

    if(isset($_POST['submitForm'])) 
    { 
     if(IsUsernameAvail($_POST['fuser'])) 
     { 
      echo 'You have been successfully registered'; 
     } 
     else 
     { 
      $_SESSION['ErrorUserMsg']="<font color=red><--Username is not available</font>"; 
      RegFormCrAndValid($_POST['fname'],$_POST['fuser'],$_POST['email']); 
     //RegFormCrAndValid($name,$username,$email) is the function in which whole html and javascript code is there to create and validate the form. 
     } 

    } 
    else{ if(isset($_POST['CheckUsr'])) 
      { 

       RegFormCrAndValid($_GET['name'],$_POST['UsrText'],''); 

      } 
      else RegFormCrAndValid('','',''); 

     } 

Мои проблемы

  1. While при нажатии кнопки CheckUserId я хочу, чтобы страница оставалась там только, почему после нажатия она не остается на одной странице с все поля заполняются, поскольку они были заполнены пользователем. Он должен просто выполнить проверку, почему перезагружается страница?
  2. Если я могу остаться на той же странице, тогда мне не нужно снова звонить в RegFormCrAndValid ($ name, $ username, $ email) эту функцию, чтобы восстановить мою форму, можно ли оставаться там с заполненными заполнениями и не вызывать функция.
  3. Я хочу искоренить использование поддельных столбцов, чтобы показать имя пользователя и имя еще раз, потому что в реальной регистрационной форме будет много полей, и у меня нет поддельного вызова или назначения для всех из них.

Я не хочу использовать ajax или jquery, хочу добиться всего через javascript, php и html.

+2

um, почему вы не хотите использовать ajax? Это очевидное решение ... –

+3

AJAX - это JavaScript ... – tymeJV

+0

Поскольку ajax был сделан из javascript, и я хочу достичь его самостоятельно :) Спасибо – new2world

ответ

1

При нажатии на <input type="submit" name="CheckUsr" value="Check User ID"> форма представляется, потому что то, то нажатие на кнопки отправки делать, если у вас нет JavaScript, чтобы заблокировать его и сделать что-то другое.

Когда страница будет отправлена ​​обратно на сервер, страница перезагрузится.

Теперь, перед вашей основной целью: вы должны понимать, что фактическая проверка, которую вы делаете, чтобы определить, доступно ли имя пользователя или нет, находится на стороне сервера, то есть логика находится на сервере. Принимая во внимание, что форма, на которую пользователь вводит имя пользователя, находится на стороне клиента, которая находится на компьютере пользователя, отображается через браузер. Теперь, как только пользователь наберет имя, вам необходимо передать эти данные на серверную сторону, чтобы он выполнил проверку и выполнил действия соответствующим образом. Поэтому у вас есть два варианта:

а) представляет форму, как вы сейчас, и использовать код сервера на стороне PHP, чтобы собрать все данные, заполненные пользователем и заселить их обратно

б) выигрыш отправить форму , просто сделайте ajax-запрос на php-скрипт, который примет в качестве входного имени пользователя и вернет вам либо истинный, либо ложный ответ, который вы можете поймать с помощью javascript, и, соответственно, разрешить отправку или отправку формы.

В этом случае либо на кнопках отправки onclick, либо на событии триггера onsubmit устанавливается функция javascript, чтобы сделать запрос ajax и «вернуть false», если запрос ajax возвращает false или «return true», если запрос ajax возвращается правда. Также в «ложном случае» вы можете использовать getElementById для установки сообщения об ошибке для пользователя.

+0

, если я использую простую кнопку html с тем, что это возможно, любой способ и страница не загружается – new2world

+0

Вы можете использовать кнопку html yes, но onclick этой кнопки должен быть ajax-вызовом, а не формировать сообщение, если вы хотите, чтобы страница удаляла проверку доступности на стороне сервера и все же не обновлялась. – coderkane

+0

ОК, спасибо короче, нет другого пути, чем ajax, чтобы сделать это перед перезагрузкой. :) – new2world

0

Ответ на (а)

Вы используете Действие посылки формы

По умолчанию поведение отправки формы он будет перезагрузить страницу. Вы должны подавлять поведение по умолчанию подчиненной формы с помощью return false .Но не рекомендуется .. Вы можете использовать AJAX

Пример кода

$('#yourFormId').submit(function() { 
//business logics here 
return false;//to avoid page reload 
}); 

Вам не нужно больше событие OnClick на кнопка отправки:

<input class="submit" type="submit" value="Send" />