my onsubmit = "return onNewUserRegistrationCheck (this);" все еще отправляет форму на ЛОЖЬ - PullRequest
2 голосов
/ 03 марта 2012

Я прочитал несколько SO сообщений по этому вопросу, и один, который я нашел с возможным объяснением, был этим одним.Ответ в этом посте гласит: «Браузеры не вызывают событие onSubmit в форме, если вы вызываете submit () программным способом».

Я не уверен, влияет ли эта операция на мою форму.

Мой код onsubmit = "return onNewUserRegistrationCheck (this);"работает на 100% - вызов onNewUserRegistrationCheck (this) происходит на 100%.

Вот этот код:

      function onNewUserRegistrationCheck(theForm)
      {

          alert("In onNewUserRegistrationCheck()");

          if(theForm.loginname.value == "<?php echo Labels::$DEFAULTLOGINEMAILLABEL ?>" 
              || theForm.password.value == "<?php echo Labels::$DEFAULTPASSWORDLABEL ?>" )
          {  
              alert("returning false now, so -- HOPEFULLY the form doesn't submit");
              return false;
          }
     }

Вот форма:

    <form enctype="multipart/form-data" onsubmit="return onNewUserRegistrationCheck(this);"
                 class="registerFormStyles" name="registerForm" id="regform"
                 action="regTheNewUser.php" method="post">
         <input type="text" id="loginname" name="<?php  echo Labels::$USERNAMELABEL ?>"
               style="width:260px" value="<?php echo Labels::$DEFAULTLOGINEMAILLABEL ?>" />

         <input type="password" placeholder="<?php echo Labels::$DEFAULTPASSWORDLABEL ?>" 
                  id="password" name="<?php echo Labels::$PASSWORD ?>"
            style="width:220px" class="inactive" />

         <input type="hidden" name="newUserRegister" id="newUserRegisterId">

         <input type="image" name="registerButton" value="Register" class="login-button-landing" 
                    onclick="document.registerForm.submit();">
    </form>

Заметьте, я использую type = "image" и делаю программную submit ().Согласно некоторым сообщениям SO, результат программного submit (), который я делаю, таков: 'Браузеры не вызывают событие onSubmit в форме, если вы вызываете submit () программно'

Однако я вижу 2 окна с предупреждениями, когда нажимаю на кнопку псевдоподачи name = "registerButton":

  alert box #1 pops up and says:  "In onNewUserRegistrationCheck()"

затем ....

  alert box #2 pops up and says:  "returning false now, so -- HOPEFULLY the form doesn't submit"

ЭтиКогда я нажимаю кнопку с именем name = "registerButton" на форме, появляются 2 окна с предупреждениями.Поэтому я должен (?) Неправильно понять, что имеется в виду в постах, которые я прочитал, в которых говорится, что «вызов submit () не запускает событие onsubmit».

Суть в том, что форма все еще отправляетсяфайл "regTheNewUser.php", даже несмотря на то, что вы можете видеть, что 'return false' произошло из-за того, что было замечено предупреждающее сообщение ", возвращающее false сейчас, поэтому - НАДЕЖДА, что форма не отправляет"

Как я могу остановить отправку формы без с помощью кнопки type = "submit"?Я доказал себе, что мой onsubmit = "return onNewUserRegistrationCheck (this);" вызывается на 100%.Я возвращаю false, но форма все равно отправляется.

Как я могу остановить отправку формы, когда я нахожу неправильный текст в форме и почему «не вернуть false» выше ОСТАНОВИТЬ отправку формы?

Ответы [ 2 ]

2 голосов
/ 03 марта 2012

Удалить

onclick = "document.registerForm.submit ();"

!!!

type = image - это отправка и document.registerForm.submit () не вызывает обработчик события onsubmit!

Таким образом, щелчок сначала запускает отправку независимо от того, затем включается обработчик события, потому что это кнопка отправки, а затем форма отправляется на сервер из первого элемента submt

1 голос
/ 03 марта 2012

В своем сообщении вы использовали

  1. Тип ввода = "Изображение" - поведение, аналогичное поведению типа ввода = "отправить", поэтому при нажатии на изображение онозапускает событие onsubmit.Вы вернули false из функции обработчика события onsubmit, и обработчик onsubmit зарегистрирован в форме, поэтому возвращаемое значение отправляется в форму и действие отправки формы прекращается.

    Но вы сказали, что вашформа отправляется, потому что,

  2. На изображении вы зарегистрировали событие onclick, для которого вы вызвали метод submit () программно, поэтому ваша форма отправляется.

Чтобы остановить отправку формы при возврате false, просто удалите обработчик события onclick из изображения и замените его следующим кодом

<input type="image" name="registerButton" value="Register" class="login-button-landing" >

Надеюсь, это решит вашу проблему

...