{

Submit is not a function

Può capitare che non si riesca ad effettuare il submit di un form ed avere un errore del tipo submit is not a function.

Esempio:

<form id="f">
<input type="text" id="address" name="address"/>
<input type="submit" onclick="f()" value="submit your address"/>
</form>

Da notare che l'id del form e la funzione per il submit hanno lo stesso nome. In questi casi il browser non effettua il submit e ritorna l'errore descritto sopra; nel nostro caso: f is not a funciton

In rete trovate "soluzioni" in cui affermano che sarebbe sufficiente non chiamare la funzione con un banale "submit", ma in realtà il problema si presenta ogni volta che, come nell'esempio, form id e funzione siano uguali.

La soluzione quindi è semplice: è sufficiente che non abbiano lo stesso nome, ma perché accade?

L'ipotesi più plausibile è che i form, non essendo elementi di visualizzazione, vengano mappati attraverso il loro id come variabili globali nel motore javascript al pari delle funzioni. Al momento dell'invocazione il motore restituisce quindi non la funzione, ma l'oggetto DOM corrispondente al form lanciando, appunto, l'errore is not a function proprio perché non lo è.

Realizzato con Drupal, un sistema open source per la gestione dei contenuti