2011-01-21 13 views
5

ho avere la seguente forma:
<form name="dealerLocatorForm"method="post"action="result.php">...</form>forma jQuery presentare vs document.form.submit

Ho allegato il plugin Omniture SiteCatalyst formAnalyis ad esso, che dovrebbe restituire informazioni solo quando il modulo non è stato presentato .

Il comportamento previsto: quando un modulo viene inviato utilizzando un pulsante di invio NO beacon deve essere attivato (perché le cose sono andate come previsto).

Problema:
La forma aveva bisogno di un po 'di validazione in modo gli sviluppatori hanno deciso di presentare a livello di codice il modulo utilizzando: document.form.dealerLocatorForm.submit() o document.dealerLocatorForm.submit()

Tuttavia, quando il modulo viene inviato in questo modo, il plugin spara un faro che mi informava che il modulo non è stato presentato ANCHE SE ERA.

D'altra parte se uso jQuery a presentare al più così: jQuery('form[name=dealerLocatorForm]').submit()
il modulo viene correttamente compilata e il faro non si attiva!

In breve jQuery replica con successo tutte le funzionalità di un modulo di invio come se fosse stato inviato da un pulsante Invia mentre il documento invia non è.

Quindi la mia domanda è: Qual è la differenza tra:
document.form.dealerLocatorForm.submit()
document.dealerLocatorForm.submit()
e
jQuery('form[name=dealerLocatorForm]').submit()

Sembra come se jQuery sta facendo qualcosa di più preciso.

+0

Avere la stessa domanda. Quando ho provato a associare $ ("# myform"). Submit (function() {// fa qualcosa; return false;}) non si attiva mai quando document.myform.submit() viene chiamato dal modulo – kiev

risposta

0

La sintassi per l'invio del modulo tramite javascript è la seguente -

document.formName.submit(); 

Nel tuo caso si ha la FormName come dealerLocatorForm

Il codice che avete utilizzato nel sottoporre la forma è -

document.form.dealerLocatorForm.submit(); 

Questo è errato come da sintassi, dovrebbe essere il seguente -

document.dealerLocatorForm.submit() 
+0

thx per il feedback , ma lo stesso problema si verifica – ddallala

0

Potrei sbagliarmi ma penso che quando si invia il modulo utilizzando jquery, ignora gli altri eventi associati come onsubmit() legati al modulo. vostro faro è probabilmente sparato da una sorta di convalida presentare e questo è probabilmente il motivo per cui non è sparato quando si utilizza jQuery

+0

acutally forse non sto spiegando questo bene. jQuery in realtà sta replicando il comportamento atteso di un pulsante meglio del documento invia. Riediterò – ddallala

2

Il comportamento di questa sintassi non è standard e non coerente tra i browser:

document.form.dealerLocatorForm.submit() 
document.dealerLocatorForm.submit() 

Usa getElementById() invece (che è ciò che jQuery utilizza internamente):

document.getElementById("dealerLocatorForm").submit() 

assicuratevi di avere l'attributo id impostato sul vostro elemento modulo:

<form id="dealerLocatorForm" ... > 
Problemi correlati