2014-11-17 17 views
6

staram się przedstawić moją formę, jednak dodałem trochę jQuery walidacji, który działa:Html.BeginForm użyciu onSubmit do sprawdzania

$(function validateForm() { 
    $("#newMonoReading").on('focusout', function() { 
     var str = ""; 

     var initialMonoReading = $('#InitialMonoReading').val(); 
     var newMonoReading = $('#newMonoReading').val() 
     if (~~newMonoReading < ~~initialMonoReading) { 
      $('#MonoErrorMessage').text("New Mono Readings must be MORE than existing"); 
      $('#MonoErrorMessage').show(); 
      return false; 


     } else { 
      $('#MonoErrorMessage').hide(); 

     } 
    }); 
}); 

Ale problem polega na przycisk złożenia

<input type="submit" value="Submit" class="btn btn-primary"> 

Jeśli wystąpi błąd, przycisk przesyłania nadal działa, potrzebuję go, aby nie wyświetlał komunikatów o błędach, a następnie wysyłał, ale próbowałem użyć formularza onsubmit, ale nie działa, mimo to wartość jest mniejsza, a błąd komunikat jest wyświetlany.

To jest html.BeginForm. Myślę, że błąd może być tutaj. nie jestem naprawdę pewien.

  <div class="modal-body"> 
     @using (Html.BeginForm("Save", "ReadingsEntry", FormMethod.Post, new { enctype = "multipart/form-data", onsubmit = "validateForm()" })) 
     { 

Wszelkie pomysły

+0

trzeba obsłużyć 'submit' zdarzenie, wykonać sprawdzanie poprawności, a następnie odwołać go, jeśli nie jest to błąd, ale możesz po prostu użyć atrybutu [niezawodny] (https://foolproof.codeplex.com/) '[GreaterThan]' –

Odpowiedz

11

Jeśli jestem poprawny, następnie złożyć chcesz potwierdzić swój formularz z funkcji jquery .. i Jeśli vailidation jest przeszedł, a następnie chcesz, aby zgłoszenie zostało zmienione, a chcesz, aby zgłoszenie zostało anulowane. Jeśli się mylę, proszę, proszę, ułóż pytanie jeszcze bardziej.

Else można zmienić funkcję jQuery -

$(function validateForm(event) { 
    event = event || window.event || event.srcElement; 
    var initialMonoReading = $('#InitialMonoReading').val(); 
    var newMonoReading = $('#newMonoReading').val() 
    if (~~newMonoReading < ~~initialMonoReading) { 
     $('#MonoErrorMessage').text("New Mono Readings must be MORE than existing"); 
     $('#MonoErrorMessage').show(); 
     event.preventDefault(); 
    } 
    else { 
     $('#MonoErrorMessage').hide(); 
    } 
}); 

i podczas tworzenia znaczników, stosowanie następujących line-

@using (Html.BeginForm("Save", "ReadingsEntry", FormMethod.Post, new { enctype = "multipart/form-data", onsubmit = "validateForm(event)" })) 

Mimo, że nie sprawdził Ci kod, ale to powinno praca .. spróbuj go i daj nam znać ..

+0

Zrobiłem to, ale teraz problem powoduje błąd w kodzie, mówiąc "nieobsługiwany przez kod użytkownika", ale chcę, aby pozostało w formularzu z komunikatem o błędzie –

+0

OK, to niemożliwe .. .preventDefault(); nigdy nie pozwoli, aby formularz został złożony. czy możesz wprowadzić alert ("Helloo, Validation Failed .. !!"); tuż po zdarzeniu.preventDefault(); oraz inny alert ("Helloo, Success Validation .. !!"); zaraz po $ ('# MonoErrorMessage'). hide(); –

+0

daj nam znać, który z nich jest wyświetlany? –

0

wypróbować to w ten sposób:

<div class="modal-body"> 
     @using (Html.BeginForm("Save", "ReadingsEntry", FormMethod.Post, new { enctype = "multipart/form-data"})) 
     { 

<input type="submit" value="Submit" onclick="return validateForm()" class="btn btn-primary"> 
+0

wypróbowany, wciąż przesyła] –

+0

@ m ali: Proszę sprawdzić mój zredagowany kod. To działa. Zweryfikowałem to. – Saket

2

ten pracował dla mnie

function validateForm() { 
    if ($('#newMonoReading').val() == 'bla bla bla') { 
     alert('bla bla bla'); 
     return false; 
    } 

    else { 
     form1.submit(); 
    } 


@using (Html.BeginForm("action", "controller", FormMethod.Post, new { @id = "form1"})) 
{ 
<input type="text" id="newMonoReading"><br> 
<input type="submit" value="Submit" onclick = "return validateForm();" class="btn btn-primary"> 
} 
1

To co pracował dla mnie,

@using (Html.BeginForm("Tag", "Translations", FormMethod.Get, new { enctype = "multipart/form-data", onsubmit = "return validateTagInput()" })) 

JQuery,

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
    <script> 
    function validateTagInput() 
     { 
     //do validation 
     if (x,y,z) 
     { 
     return true; //let page be submitted 
     } 
     else { 
     return false; //do not let submission go through 
      } 
     } 
</script> 
Powiązane problemy