2017-01-05 1 views
0

Ich habe einfach Html.BeginForm mit einigen Daten, und ich möchte überprüfen, einige Bedingungen mit onsubmit() Javascript-Funktion, wenn Benutzer auf "Senden" -Schaltfläche, bevor Formular gesendet wird. Und wenn diese Bedingung falsch ist, möchte ich aufhören, die Seite neu zu laden, einfach mein Formular nicht an die POST-Methode senden. Dies funktioniert gut, traf Bit ich ein Problem, weil DOM-Elemente, die ich in onsubmit create() Methode dissapear:ASP.NET wenn Formular onsubmit DOM Elemente genannt 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> 

Also, wenn ich falsch zurückgeben möchten, und senden Sie keine Form, Text, den ich an validation-div anhängen, das sagt, was falsch ist, verschwindet - das ist nicht das, was ich erreichen möchte, weil es sehr kurze Zeit ist und der Benutzer das nicht einmal bemerken kann!

Antwort

1

Sie lösen das Klickereignis manuell aus. Stellen Sie sicher, Typ ist Schaltfläche.

Sie brauchen viel nicht **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

Dank! Wie auch immer, warum Eingabe-Typ muss hier eine Schaltfläche sein, nicht einreichen? Und kann ich onclick() anstelle von click() verwenden, und das in Button-Definition meine ich wie:

+1

' type = "button" 'sendet das Formular nicht. '$ (" # btnSubmit "). click' ist jQuery-Methode zum Anhängen eines Ereignisses im Grunde genommen wie 'onclick =" someFun() "', aber es ist eine bevorzugte Methode, wenn Sie jQuery verwenden. – Win

Verwandte Themen