Как проверить форму из тега <a>? - PullRequest
0 голосов
/ 06 ноября 2011

Для моего проекта мне нужно использовать якорь ( -tag), чтобы отправить форму. Все работает отлично, , за исключением проверки , где мне нужно проверить, если пользователь ввел все поля и в правильном формате.

Вот мой код JS:

<script type="text/javascript">
    function validateForm(){
        var x=document.forms["register"]["email"].value
        var atpos=x.indexOf("@");
        var dotpos=x.lastIndexOf(".");
        if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length){
          alert("Enter a valid e-mail address");
          return false;
          }

        x=document.forms["register"]["username"].value
        if (x==null || x=="")
          {
          alert("Enter full name");
          return false;
          }

        x=document.forms["register"]["gender"].value
        if (x==null || x=="")
          {
          alert("Enter your gender");
          return false;
          }
    }
</script>

Теперь это то, что я хочу отправить

    <form name="register" action="after_registration.php" method="get" onsubmit="return validateForm();">
    ...
    <a class="nonblock" href="javascript:document.register.submit();"><!-- content --><p id="n62">Register</p>
    </form>

Но это не работает. Независимо от того, что я ввожу, даже если поля остаются пустыми, форма все равно отправляется. Есть идеи, почему это происходит?

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

Попробуйте вместо этого настроить его.

Прежде всего, не помещайте JavaScript в href. Оставьте это поле пустым и верните false из обработчика onclick, чтобы остановить навигацию. Во-вторых, вызовите validateForm из обработчика onclick.

<a class="nonblock" href="" onclick="validateForm(); return false;" />

Удалить входящий вызов из формы

<form name="register" action="after_registration.php" method="get" >

В validateForm () вместо этого отправьте форму.

//if no errors then
document.forms["register"].submit();
0 голосов
/ 06 ноября 2011

Вместо использования ссылки, используйте <button type=submit>

<button type=submit class="nonblock"><!-- content --><p id="n62">Register</p></button>

Для этого не требуется JavaScript, и если ваш form обработчик onsubmit настроен правильно, вы получите то, что вы хотите.

...