2010-09-13 11 views
10

Próbuję użyć wtyczki jquery validation, ale mój formularz znajduje się w panelu aktualizacji. Tak więc nawet po zastosowaniu sprawdzania poprawności przy wysyłaniu formularza, sprawdza on i wyświetla wymagany komunikat przez prawie 2 sekundy, a następnie przesyła formularz.
Co to jest obejście tego problemu?Jquery Validation And Update Panel Together

Próbowałem tego również.

<asp:UpdatePanel ID="AddUserPanel" runat="server" 
      ChildrenAsTriggers="false" 
      UpdateMode="Conditional"> 

Ale to też nie pomaga.

+0

Jaka wtyczka do sprawdzania poprawności? – Hawxby

+0

@Hawxby: http://bassistance.de/jquery-plugins/jquery-plugin-validation/ – naveen

+0

Panele aktualizacji są błyszczącą zabawką dla niczego nie podejrzewającego gościa. Sugeruję, abyś odkrył AJAX :) (mam jednak odpowiedź i wyciągnę kod z miejsca, które celowo straciłem, gdy odkryłem AJAX) –

Odpowiedz

0

Trzeba return false i zatrzymać zdarzenie propagacji na onSubmit, coś takiego:

$("form").submit(function (e) { 
    e.preventDefault(); 
    return(false); 
}); 

Jednak ja nie wiem nic o ASP, więc nie wiem, czy to pomoże w tym szczególny przypadek.

Być może musisz użyć .live lub ponownie podłączyć program obsługi po załadowaniu zawartości tego panelu, aby zdarzenia onsubmit były z nim powiązane?

0

Asp.net WebForms używa funkcji __doPostback(), która przesyła formularz.

To jest to, co chciałbym zrobić:

  1. Sprawdź forma przedstawienia wykonanie, aby zobaczyć czy wszystko działa jak należy więc najpierw walidacja dzieje (co jestem całkiem pewien, że to robi, bo dostaniesz te wiadomości w górę) i sprawdź kod każdej poszczególnej części.

  2. Jeśli walidacja nie uniemożliwia wykonanie domyślnej zdarzeń (propagacji) albo przez powracającego false wywoływania preventDefault() lub oba, to powinno być zmienione na tyle pracować z ASP.NET WebForms.

  3. Jeśli na fakcie walidacyjnym wszystko wydaje się być w porządku, należy zmienić funkcję __doPostback(). Brzmi tak hackowato, ale czasami trzeba robić takie rzeczy. Skopiuj istniejący kod i dodaj dodatkowe sprawdzenie. Nic się martwić.

Sprawdź również ten Stackoverflow question.

O cholera. Wystarczy zrobić wyszukiwania Google na ten temat i to tylko StackOverflow wyniki: jQuery validation webforms site:stackoverflow.com

2

Jeśli używasz menedżera skryptu potrzebny kod L33t poniżej:

$(function() { 
//Code that runs before update panel is fired. 

     //Listen for update panel 
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
     //Re-initialize jquery after an auto post back. 
     function EndRequestHandler(sender, args) { 
      //Do work after update panel fires. 
     } 
    }); 

Więc w zasadzie masz duplikat kod, kod poza EndRequestHandler() i wewnątrz niego.

0

Jeśli dobrze pamiętam, możesz użyć zwykłego przycisku zamiast przycisku asp :, który nie spowoduje odświeżenia strony. W takim przypadku możesz użyć JavaScript, aby zaktualizować UpdatePanel.

Powiązane problemy