Domanda

Qui è il problema:

La mia pagina visualizza un insieme di elementi. Ogni elemento ha una casella di controllo associato ad esso (che è parte di un modulo). Utente potrebbe verificare una di queste caselle di controllo e premere il tasto 'Cancella'. La stessa pagina ha anche un pulsante 'Carica' che caricare un foglio Excel di elementi. Al momento, il mio modulo sumbits azione a dire: "xyzAction" e ho due gestori diversi (analoghe a Struts Action) - uno per l'eliminazione dei negozi e altri negozi per il caricamento.

Mi è stato detto che il modo migliore per farlo è quello di contare su javascript facendo uno di questi: 1)) Accensione azione modulo a stampa di upload e pulsanti eliminare - c'è da richiamare diverse azioni. 2) Utilizzare una variabile nascosta "atto" per impostarlo per eliminare / upload e inviare ad un singolo modulo. L'azione lato server sarebbe preso cura di identificare l'atto ed inoltro al azione corrispondente.

Approccio (1) - sembra molto poco elegante per me. Giocando con l'azione sotto forma sembra inutile. Approccio (2) -. Sarebbe ovviamente non funziona se il javascript è spento e non è molto elegante sia

Ci deve essere un terzo modo per fare questo ?, che mi renderebbe felice?

È stato utile?

Soluzione

È necessario per ottenere il codice HTML corretto prima.

Si hanno due azioni diverse, quindi si dovrebbe avere due forme - una buona regola generale è che ogni modulo dovrebbe avere un solo pulsante di invio. Questa è la migliore pratica per HTML e farà in modo che la pagina funziona senza JS o qualsiasi altro inganno.

Una volta che hai la pagina di lavorare in questo modo, utilizzare JS per manipolare il DOM per produrre l'interfaccia utente di cui avete bisogno. Questo sta usando JS aggiungere behvour per l'interfaccia utente ed è delle migliori pratiche per JS discreto.

(Se davvero si vuole confondere le vostre azioni in un unico modulo, cambiando l'azione del modulo con JS è il miglior modo di agire. Ma si consideri che cosa accadrebbe se un utente controlla una casella di controllo e poi cambia idea e carica un file di lasciare la casella selezionata. Si dovrebbe fare in modo che questo non dovrebbe cancellare niente.)

Altri suggerimenti

Sembra che potrebbe essere necessario due forme diverse, per le due diverse azioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top