2009-08-14 2 views
0

У меня есть форма с onsubmit атрибута, как это (который я не может изменить):JQuery события + HTML атрибуты событий

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

Я хочу, чтобы запустить другую функцию, которая должна выглядеть при возврате результата validate(), а затем, возможно, верните false, чтобы предотвратить отправку формы.

Edit:

Содержание onsubmit="" может измениться, так что я не могу просто написать, что код внутри своей собственной функции.

ответ

1

Придумал следующим при написании вопроса, но я открыт для лучшего способа:

// 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

Вы можете просто использовать «this» вместо $ (this) .get (0) –

+0

@Josh Stodola Хорошая точка – Greg

2

Вы можете заменить функцию утвердите самостоятельно с чем-то вроде этого:

var oldValidate = validate; 

var validate = function(form) { 
    var value = oldValidate(form); 
    //do your stuff here. 
} 
Смежные вопросы