Sto provando a intercettare qualsiasi tipo di invio di moduli per un modulo specifico su una pagina web. Sembra essere molto semplice con jQuery: form.submit(function(e) {…})
e funziona perfettamente se faccio clic sul pulsante di invio.Come intercettare il modulo in modo affidabile?
Tuttavia, v'è anche una proprietà onChange su un campo di selezione che fa this.form.submit()
e sembra che questa chiamata aggira il mio ascoltatore (in cromo/Firefox):
<script type="text/javascript">
function submitForm(e) {
window.alert('submitted');
e.preventDefault();
return false;
}
$(document).ready(function() {
$('#bar').submit(submitForm);
});
</script>
<form id="bar">
<select name="name" onChange="this.form.submit()">
<option>Foo</option>
<option>Bar</option>
</select>
<br/>
<input type="submit"/>
</form>
Ovviamente nel codice sopra ho solo cambiare this.form.submit()
a un riferimento specifico del listener di invio. Tuttavia nella mia app reale non è così semplice, quindi sto cercando un modo in cui non devo modificare la proprietà onChange.
Se non ho fatto uno sbaglio stupido ma questo è in realtà previsto comportamento del browser, sarei davvero felice se potessi spiegare il flusso di eventi e perché questo porta ai sintomi descritti sopra.
Oh, ho dimenticato di dire che "$ ('# bar'). Submit()" per la parte onChange funziona pure. JS esegue una sorta di 'early-bind' sugli attributi onX? –