J'ai besoin de tester si la valeur d'un formulaire onsubmit
est une fonction. Le format est généralement onsubmit="return valid();"
. Existe-t-il un moyen de savoir si c'est une fonction et si elle peut être appelée? L'utilisation de typeof renvoie simplement que c'est une chaîne, ce qui ne m'aide pas beaucoup.
EDIT : Bien sûr, je comprends que "return valid ();" est une chaîne. Je l'ai replace
réduit à "valid ();", et même à "valid ()". Je veux savoir si l'un de ces éléments est une fonction.
EDIT : Voici un code qui peut aider à expliquer mon problème:
$("a.button").parents("form").submit(function() {
var submit_function = $("a.button").parents("form").attr("onsubmit");
if ( submit_function && typeof( submit_function.replace(/return /,"") ) == 'function' ) {
return eval(submit_function.replace(/return /,""));
} else {
alert("onSubmit is not a function.\n\nIs the script included?"); return false;
}
} );
EDIT 2 : Voici le nouveau code. Il semble que je doive encore utiliser un eval, car appeler form.submit () ne déclenche pas les onsubmits existants.
var formObj = $("a.button").parents("form");
formObj.submit(function() {
if ( formObj[0].onsubmit && typeof( formObj.onsubmit ) == 'function' ) {
return eval(formObj.attr("onsubmit").replace(/return /,""));
} else {
alert("onSubmit is not a function.\n\nIs the script included?");
return false;
}
} );
Des suggestions sur la façon de faire mieux?