Necesito comprobar si el valor de un formulario es onsubmit
es una función. El formato es típicamente onsubmit="return valid();"
. ¿Hay alguna forma de saber si se trata de una función y si se puede llamar? Usar typeof solo devuelve que es una cadena, lo cual no me ayuda mucho.Comprobando si el valor es una función
EDIT: Por supuesto, entiendo que "return valid();" es una cadena He replace
d hasta "valid();", e incluso "valid()". Quiero saber si alguno de ellos es una función.
EDITAR: Aquí hay un código, que puede ayudar a explicar mi problema:
$("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: Aquí está el código nuevo. Parece que todavía tengo que usar una evaluación, porque al llamar a form.submit() no se activan los envíos existentes.
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;
}
});
Sugerencias sobre cómo hacerlo mejor?
¿de dónde viene f en f.onsubmit? – Art
'f' es una instancia de formulario. Lo pasa a la función testOnsubmitAndSubmit como argumento. (Sé que esta pregunta es bastante antigua, pero tal vez mi respuesta le ahorrará a alguien algo de tiempo :)) – zeroos