Cambiare onSumbit attraverso javascript

Devo cambiare il valore di onsumbit attraverso javascript (compatibile anche con firefox !) ma niente da fare ho provato così:

<html>
<head>
<script>
function cambia(){
document.forms['modulo'].onSubmit=function (){ 
                                                                 return confirm("Sicuro di voler cancellare la news ?"); 
                       } 
------//ho provato anche document.forms['modulo'].onSubmit='check()'; ma niente //------
document.forms['modulo'].action='pagina1.php';   
</script>
</head>
<body>
<form name="modulo" action="" onsubmit=''> 
        <input type="submit" value="link1" onclick="cambia()";>
    
</form> 
</body>
</html>

Ma non va, mi fa solo la modica di action ma di onsubmit non ne vuole sapere

inviato 10 anni fa
Toto007
X 0 X

E spiegarti meglio? Non capisco cosa vuoi fare e sopratutto cosa vuoi ottenere.

Comunque se parti da un evento, l'onclick() del tasto di invio, poi non è che puoi cambiare al volo l'evento già in atto.

Quello che puoi fare è far fare alla funzione cambia ciò che vuoi effettivamente fare, e questo ce lo devi ancora spiegare :D

risposto 10 anni fa
Marco Grazia
X 0 X

Come ho detto e anche leggendo il codice, voglio cambiare il valore di action e di onsumbit del form in base al bottone premuto (quello che ho incollato è un codice di esempio , visto così non ha molto senso).

Quindi ad esempio se premo il bottone modifica, la form sarà reindirizzionata alla pagina "modifica.php" , se premo il bottone cancella la form sarà reindirizzionata alla pagina "cancella.php".

Oltre quindi a modificare l'action del form voglio modificare anche il valore di onsumbit, se clicco su cancella voglio che mi esce un msg di conferma che dice "sicuro di voler cancellare la news", se invece clicco su modifica me lo modifica direttamente.

In problema quindi è che in internet explorer funziona, in firefox invece  non  mi cambia il valore di onsumbit.

risposto 10 anni fa
Toto007
X 0 X

E infatti ha ragione Gecko, non devi affato cambiare il valore di onsubmit, anche perché non ti serve.

Tu puoi benissimo fare una cosa del genere:

xhtml

è tutto ridotto all'osso, ma nota che manca l'attributo action nel form!
<form name='spedizione' method='post' >
<input type='button' name='leggi' ... onclick='cambia(this)' />
<input type='button' name='cancella' ... onclick='cambia(this)' />
<input type='button' name='spedisci' ... onclick='cambia(this)' />
</form>

javascript

function cambia(modulo) {
  switch (modulo) {
  case 'leggi': document.spedizione.action='leggi.php';
  case 'cancella': document.spedizione.action='cancella.php';
  case 'spedisci': document.spedizione.action='spedisci.php';
  }
document.spedizione.submit();
}

Non ricordo se l'oggetto this applicato al campo di input da il suo nome o il suo valore, mi scappa ora e non ho il 'librone' sotto mano, comunque il concetto è semplice, tramite lo switch e quindi a seconda del bottone premuto, la funzione cambia() invia il risultato alla pagina voluta.

Ovviamente non ha la pretesa di funzionare subito, dato che non ricordo a mente tutti i passaggi, ma il concetto che sta alla base del 'sistema' è questo.

Al limite per sviluppare il concetto prova a dare un'occhiata alla documentazione di javascript

In particolare:

metodo di validazione di un campo

il modulo FORM in Javascript

risposto 10 anni fa
Marco Grazia
X 0 X

Il mio problema era permettere una modifica di questo tipo alla onsubmit,

document.forms['modulo'].onsubmit='check()';

ma non so per quale motivo non la permette così alla fine ho ragionato un pò ed ecco il risultato:

Vi incollo il codice:

<script> 

function modifica()
{
      document.forms['modulo'].action='modifica.php';
      document.forms['modulo'].submit();            
}

 function cancella()
{
        if(confirm("Sicuro di voler cancellare la news ?"))
        {
                document.forms['modulo'].action='cancella.php';   
                document.forms['modulo'].submit();   
        }
 }


</script> 

<form name="modulo" action="" onsubmit=''> 
        <input type="button" value="modifica" onclick="modifica()"> 
         <input type="button" value="cancella" onclick="cancella()"> 
  </form> 
</body>
risposto 10 anni fa
Toto007
X 0 X

Potrebbe effettivamente funzionare così, tra l'altro questa sera ho tratto spunto dalle tue argomentazioni per fare un rudimentale sistema di passaggio di valori tra javascript e php.

Avevo bisogno di leggere un file xml e caricarlo un due text box.

In javascript si può ovviamente fare ma mi incasino con i vari sistemi di DOM presenti nei vari browser (cross browsing per intenderci) mentre il PHP è uno solo per ora.

Così dopo aver inserito il nome del file da caricare in una variabile sull'url e la passo via get tramite submit(), ricarico la pagina e riempio i campi col contenuto del file xml; il sistema funziona egregiamente, considerando anche che nella form originale c'è come metodo il post.

Quasi, quasi tanto per perfezionare tutto, tolgo anche l'attributo method e lo modifico di volta in volta con il javascript :D

Certo è che se qualcuno ha javascript disabilitato, tutto il sistema si impalla, ma per ora va così.

risposto 10 anni fa
Marco Grazia
X 0 X

Guarda caso proprio un mesetto fa ho implementato la lettura e la scrittura di un file xml attraverso php. Quindi se posso darti qualche consiglio no problem  O0

risposto 10 anni fa
Toto007
X 0 X

Grazie ma il file lo scrivo e lo leggo benissimo, magari sì una cosa di cui ho parlato nella sezione dedicata al PHP di questo forum, dove chiedo come fare a modificare un file, dato che se sovrascrivo un file xml con la funzione save() mi da errore.

risposto 10 anni fa
Marco Grazia
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda