2017-01-05 2 views
0

У меня есть простой Html.BeginForm с некоторыми данными, и я хочу проверить какое-то условие, используя функцию onsubmit() javascript, когда пользователь нажал кнопку «отправить», прежде чем отправить форму. И когда это условие ложно, я хочу прекратить перезагрузку страницы, просто не отправляйте мою форму методу POST. Это работает отлично, немного я встретил проблему, потому что DOM элементы, которые я создаю в onsubmit() метод Dissapear:ASP.NET, когда форма onsubmit называется элементами DOM dissapear

@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form", **onsubmit=" return registerValidation()"**})) 
    { 
     @Html.AntiForgeryToken() 

    @Html.TextBoxFor(m => m.Email, new { @class = "form-control", @id = "emailVal"}) 
    @Html.ValidationMessageFor(m => m.Email,"", new { @class = "validation-error-white", @id="emailValidation"}) 

    <input type="submit" class="btn btn-warning btn-block add-item-button-text" value="Zarejestruj" /> 

    } 


<script type="text/javascript"> 

    function registerValidation() { 

      var validForm = validateRegisterForm(email, login); 
      if (!validForm) { 
       $('#emailValidation').append('Those email already exists! Take another one'); 
       return false; 
      } 
      return true; 
     } 
    </script> 

Так что, когда я хочу вернуться ложным, и не отправить форму, текст, который я добавьте в validation-div, в котором говорится, что это неправильно, - этого я не хочу достичь, потому что это очень маленький период времени, и пользователь не может этого даже заметить!

ответ

1

Вы вручную запускаете событие нажатия кнопки. Удостоверяются, что тип is кнопка.

Вам не нужно **onsubmit=" return registerValidation()"**

<input id="btnSubmit" type="button" ... /> 

<script type="text/javascript"> 

    $(function() { 

     // Trigger btnSubmit button's click event, when enter key is pressed. 
     // If you do not want that feature, you can ignore this. 
     $("form").keydown(function (event) { 
      if (event.keyCode === 13) { 
       $("#btnSubmit").click(); 
       return false; 
      } 
     }); 

     $("#btnSubmit").click(function() { 
      // Do something, then submit the form 
      $("form").submit(); 
     }); 
    }); 
</script> 
+0

Спасибо большое! В любом случае, почему тип ввода должен быть здесь, а не отправлять? И могу ли я использовать onclick() вместо click(), и называть это в определении кнопки я имею в виду:

+1

' type = "button" 'не будет отправлять форму. '$ (" # btnSubmit "). click' является способом jQuery привязки события в основном так же, как' onclick = "someFun()" ', но это предпочтительный метод, если вы используете jQuery. – Win

Смежные вопросы