Проверка формы с помощью jQuery - Weird Redirect

0

Хорошо, поэтому я пытаюсь выполнить валидацию формы с помощью jQuery. Не уверен, почему, но когда вы нажимаете кнопку "Отправить", он перенаправляет вас на страницу, на которой вы уже находитесь.

Действие форм пустое, и я включил javascript файл в заголовок.

Я поставлю код ниже. Дайте мне знать, если вы поймете, что случилось. Я хочу, чтобы он проверял с помощью jQuery, а затем отправил вас в php файл с этими значениями в методе POST.

Register.js:

$(document).ready(function() {
  $('button[name=regsubmit]').click(function(){
    var fname = $('input[name=regfirstname');
    var lname = $('input[name=reglastnaame');
    var email = $('input[name=regemail');
    var password = $('input[name=regpassword');
    var repeatpassword = $('input[name=regrepeatpassword');
    var username = $('input[name=regusername');
    var atpos = email.indexOf("@");
    var dotpos = email.indexOf(".");
    if (fname==null || fname=="")
      {
      alert('First name must be filled out!');
      return false;
      }
    if (lname==null || lname=="")
      {
      alert('Last name must be filled out!');
      return false;
      }
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=email.length)
      {
      alert('Not a valid e-mail address!');
      return false;
      }
    if (username==null || username=="")
      {
      alert("Username field must be filled out!");
      return false;
      }
    if (password==null || password=="")
      {
      alert("Subject field must be filled out!");
      return false;
      }
     if (repeatpassword==null || repeatpassword=="")
      {
      alert("Repeat password field must be filled out!");
      return false;
      }
    if (password != repeatpassword)
      {
      alert("The passwords do not match!");
      return false;
      }
    else
    {
    location.href="register.php";
    }
  });
});

Форма:

               <form name="register" method="POST">
                <fieldset>
                  <div class="form-container row-fluid">
                    <div class="span6"> 

                      <div class="control-group">
                        <label class="control-label" for="regfirstname">First Name</label>
                        <div class="controls">
                          <input id="regfirstname" tabindex="1" name="regfirstname" type="text" placeholder="First Name" class="input-large" required>
                        </div>
                      </div>

                      <div class="control-group">
                        <label class="control-label" for="regusername">Username</label>
                        <div class="controls">
                          <input id="regusername" tabindex="3" name="regusername" type="text" placeholder="Username" class="input-large" required>
                        </div>
                      </div>



                      <div class="control-group">
                        <label class="control-label" for="regpassword">Password</label>
                        <div class="controls">
                          <input id="regpassword" tabindex="5" name="regpassword" type="password" placeholder="Password" class="input-large">
                        </div>
                      </div>
                          <div class="controls">
                            <button id="regsubmit" tabindex="7" name="regsubmit" class="button background-asbestos">Submit</button>
                          </div>
                    </div><!-- .span6 -->

                    <div class="span6"> 

                      <div class="control-group">
                        <label class="control-label" for="reglastname">Lastname</label>
                        <div class="controls">
                          <input id="reglastname" tabindex="2" name="reglastname" type="text" placeholder="Lastname" class="input-large" required>
                        </div>
                      </div>

                      <div class="control-group">
                        <label class="control-label" for="regemail">Email</label>
                        <div class="controls">
                          <input id="regemail" name="regemail" tabindex="4" type="text" placeholder="[email protected]" class="input-large"</td>
                        </div>
                      </div>

                      <div class="control-group">
                        <label class="control-label" for="regrepeatpassword">Repeat Password</label>
                        <div class="controls">
                          <input id="regrepeatpassword" tabindex="6" name="regrepeatpassword" type="password" placeholder="Repeat Password" class="input-large" required>
                        </div>
                      </div>
                      <!-- .span6 -->
                    <!-- span6 --> 
                  </div><!-- .row-fluid -->
                </fieldset>
              </form>
  • 0
    если действие формы пустое, по умолчанию используется «отправить» на ту же страницу, на которой вы находитесь => w3.org/TR/html401/interact/forms.html#adef-action
  • 0
    Так, на что я устанавливаю действие? register.js?
Показать ещё 2 комментария
Теги:
validation
forms

2 ответа

1

Хорошо, что ваши JS и HTML - это большой беспорядок, поэтому я не буду воссоздать все это, но основы:

Дайте вашей форме ID:

<form id="SomeForm" name="register" method="POST">

Затем предотвратите действие по умолчанию и отправьте, если проходит:

// reference the button by the ID you gave it
$('#regsubmit').click(function(e){
    // stop original submission
    e.preventDefault();

    // all your checking stuff here, but if true, then:
    document.getElementById('SomeForm').submit();
});

Это гарантирует правильное обращение к кнопке, предотвращение правильной подачи и отправку только в том случае, если она действительна.

  • 0
    Должен ли я добавить действие к нему? Или так держать, потому что куда он перенаправляет в register.php? Потому что, когда я добавляю его таким образом, он все равно просто обновляет страницу.
  • 0
    Вам нужно добавить действие как страницу register.js
Показать ещё 4 комментария
0

предотвращать действие по умолчанию для отправки

$('button[name=regsubmit]').click(function(e)
{
  e.preventDefault();

 //your code below    

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню