2011-11-21 8 views

Odpowiedz

3

Hijack kliknij przycisk, aby przesłać formularz za pomocą JavaScript.

Oto dobry przykład z jQuery:

$("#MyButton").click(function(e) { 

    //submit your form manually here 
    e.preventDefault(); 
}); 
14

I załączeniu programu obsługi zdarzeń do niektórych przycisków, które zmieniły ustawienia obiektu walidatora na danej postaci.

$(".jsCancel").click(function (e) { 
    $(e.currentTarget).closest("form").validate().settings.ignore = "*" 
}); 

To zadziałało dla mnie jak urok w MVC3.

Nie wiem, czy to pomaga w szczególności, ale ponieważ używam formularza ajax, musiałem dołączyć wydarzenie do tych przycisków za każdym razem, gdy treść formularza ajax został zastąpiony, używając sukcesu ajax ajax. Pełny kod który reparses formularz i przywiązuje zdarzenia do przycisków Anuluj:

$(document).ajaxSuccess(function (event, xhr, settings) { 
    var $jQval = $.validator, adapters, data_validation = "unobtrusiveValidation"; 
    $jQval.unobtrusive.parse(document); 
    $(".jsCancel").click(function (e) { 
     $(e.currentTarget).closest("form").validate().settings.ignore = "*" 
    }); 
}); 
+0

dziękuję. Rozwiązałem ten problem, dodając opcję "anuluj" do mojego przycisku podczas generowania Treści. Mam pytanie do ciebie Co ten selektor oznacza ".jsCancel"? Czy próbowałeś użyć tego $ (". JsAnuluj"). Live ("kliknij", ... zamiast tego $ (". JsAnuluj"). Click (function (e) ... – Sergii

+0

Dodanie klasy anulowania nie działa dla mnie, stąd moje obejście.Zwykle przedrostki klas css z js, jeśli są one używane do znajdowania elementów, a nie stylizacji.Załóż tę klasę na moje przyciski-submitów, które nie powinny potwierdzać formularza.Myślę na żywo () lub on() również by działało, po prostu nie jestem do tego przyzwyczajony. – Skymt

1

Tak naprawdę jest to komentarz do odpowiedzi przez tugberk, ale komentarze nie pokazują przykłady kodu bardzo dobrze.

Niektóre wersje przeglądarek nie odpowiadają funkcji "preventDefault()". Po ugryzieniu przez to kilka razy, dodałem prostą funkcję użytkową:

//Function to prevent Default Events 
function preventDefaultEvents(e) 
{ 
    if (e.preventDefault) { 
     e.preventDefault(); 
    } else { 
     e.returnValue = false; 
    } 
} 

to nazwać w miejscu „preventDefault” tak:

$("#CancelButton").on("click", function(event) { 
    preventDefaultEvents(event); 
    return false; 
}); 
1

Można użyć „Cancel” klasę css . Ex: <input type="submit" value="Cancel" name="Cancel" class="cancel" />

JQuery.Validate obsłużyć resztę w poniższym kodzie:

// allow suppresing validation by adding a cancel class to the submit button 
this.find("input, button").filter(".cancel").click(function() { 
    validator.cancelSubmit = true; 
}); 
Powiązane problemy