2009-08-14 15 views
0

ich ein Formular mit einem onsubmit Attribut wie diese haben (was ich nicht ändern können):jQuery Ereignisse + HTML Event-Attribute

<form onsubmit="return validate(this);"> 

ich eine andere Funktion ausgeführt werden soll, das muss aussehen bei der Rückkehr Ergebnis validate() und dann möglicherweise false zurückgeben, um das Senden des Formulars zu verhindern.

Edit:

Der Inhalt onsubmit="" könnte sich ändern, so kann ich nicht nur, dass Code in meine eigene Funktion schreiben.

Antwort

1

Kam mit der folgenden, während die Frage zu schreiben, aber ich bin offen für einen besseren Weg:

// Grab the old function and remove it from the form 
var oldSubmit = $('form').get(0).onsubmit; 
$('form').get(0).onsubmit = null; 

$('form').submit(function() 
{ 
    // Use .call to make sure "this" is correct when the old function is run 
    if (!oldSubmit.call($(this).get(0))) 
     return false; 

    // Do stuff 

    return false; 
}); 
+0

Sie können einfach "this" anstelle von $ (this) verwenden .get (0) –

+0

@Josh Stodola Guter Punkt – Greg

2

Sie konnten die Prüf-Funktion mit Ihrem eigenen mit so etwas wie diese ersetzen:

var oldValidate = validate; 

var validate = function(form) { 
    var value = oldValidate(form); 
    //do your stuff here. 
}