Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    Script che "non rende permanenti le modifiche": perché?

    Salve a tutti,

    ho scritto un piccolo script che serve a spostare su e giù coppie di elementi di una lista di input box.
    Ecco la lista di input box di cui parlo:


    I bottoni UP e DOWN che si vedono sono collegati al seguente Javascript e rispettivamente alle funzioni up() e down():

    codice:
    /* prende la coppia di valori della riga "row" e li sposta su di una posizione poi prende la 
    coppia di valori della riga "row-1" e li piazza nella riga "row" */
    function up(row){				
    	var prev_valore_a = document.getElementById((row-2)*2+1).value;
    	var prev_valore_b = document.getElementById((row-1)*2).value;
    	document.getElementById((row-2)*2+1).value = document.getElementById(row*2-1).value;
    	document.getElementById((row-1)*2).value = document.getElementById(row*2).value;
    	document.getElementById(row*2-1).value = prev_valore_a;
    	document.getElementById(row*2).value = prev_valore_b;
    }
    
    /* duale della funzione up() */
    function down(row){
    	var next_valore_a = document.getElementById(row*2+1).value;
    	var next_valore_b = document.getElementById(row*2+2).value;
    	document.getElementById(row*2+1).value = document.getElementById(row*2-1).value;
    	document.getElementById(row*2+2).value = document.getElementById(row*2).value;
    	document.getElementById(row*2-1).value = next_valore_a;
    	document.getElementById(row*2).value = next_valore_b;
    }
    Quando scrivo valore_a intendo un valore nella prima colonna (es. C, rif. immagine) di input box, mentre con valore_b intendo un valore della seconda colonna di input box (es. CC, rif. immagine).

    Il javascript qui sopra funziona perfettamente (nel senso che visivamente fa quello che avevo previsto che facesse) ma ho riscontrato un problema: quando provo questo script con il browser (Firefox nella fattispecie), se visualizzo i sorgenti (CTRL+U) prima e dopo aver spostato una riga qualsiasi con quella sopra (o sotto), sono identici.

    ogni riga della tabella che rappresenta appunto l'immagine postata qui sopra, è del seguente tipo (riporto le prime due):
    codice:
    <input type="text" id="1" name="valore_a1" value="A" size="50"/>
    <input type="text" id="2" name="valore_b1" value="AA" size="10"/>
    <input type="button" value="UP" disabled="disabled">
    <input type="button" value="DOWN" onClick="down(1);">
    
    
    <input type="text" id="3" name="valore_a2" value="B" size="50"/>
    <input type="text" id="4" name="valore_b2" value="BB" size="10"/>
    <input type="button" value="UP" onClick="up(2);">
    <input type="button" value="DOWN" onClick="down(2);">
    Il problema più grave però, è che siccome io uso quella "tabella" all'interno di un FORM per fare una POST e quindi inserire dei dati in un database tramite una JSP, ottengo sempre un NullPointerException, quindi questo javascript fa qualcosa che non dovrebbe fare, ma non riesco a capire cosa.

    Di fatto è come se il javascript non rendesse permanenti negli input box, le modifiche visuali che vengono fatte con la pressione dei bottoni

    Qualcuno saprebbe darmi qualche indizio? Per caso javascript non è indicato per fare ciò che voglio in questo caso?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Troppo prolisso, dopo un po ti si perde, comunque il javascript fa solo modifiche visuali non effettive, apro un div a centro pagina e lo vendo, guardo il sorgete è il div non esiste
    P.S. sempre che abbia capito la domanda.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Immaginavo un commento simile, ma ho voluto specificare bene cosa succede. Se fossi stato troppo sintetico avrei sicuramente scaturito domande, che invece dovrei aver evitato in questo modo.

    Comunque, intanto ti ringrazio per la risposta.
    Quindi non posso usare Javascript per lo scopo che mi sono prefissato?

    Faccio presente che se invece uso javascript per cancellare il contenuto di un input box, allora in questo caso funziona! Perché nell'altro caso invece no?

    Il tuo esempio del div non l'ho capito.


  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da fbcyborg
    Immaginavo un commento simile, ma ho voluto specificare bene cosa succede. Se fossi stato troppo sintetico avrei sicuramente scaturito domande, che invece dovrei aver evitato in questo modo.

    Comunque, intanto ti ringrazio per la risposta.
    Quindi non posso usare Javascript per lo scopo che mi sono prefissato?
    Ma non saprei non conosco jsp verifica che out (cosa invii al server) della form sia corretto
    Faccio presente che se invece uso javascript per cancellare il contenuto di un input box, allora in questo caso funziona! Perché nell'altro caso invece no?
    Perché ci sarà un errore nel js oppure recuperi male i dati lato server
    Il tuo esempio del div non l'ho capito.

    Che vuoi che ti dica è un esempio, non l'hai capito pazienza
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Originariamente inviato da cavicchiandrea
    Ma non saprei non conosco jsp verifica che out (cosa invii al server) della form sia corretto
    Il form è corretto. Escludo ogni possibilità di errore nella JSP. Invece, come uso il javascript che ho postato per spostare i valori, succede qualcosa che incasina il form, e quindi mi manda valori sbagliati negli input box che poi condizionano l'operato della JSP.
    Originariamente inviato da cavicchiandrea
    Perché ci sarà un errore nel js
    Questo l'avevo intuito. Infatti ho chiesto aiuto qui nel forum.

    Originariamente inviato da cavicchiandrea
    oppure recuperi male i dati lato server
    no

    Originariamente inviato da cavicchiandrea
    Che vuoi che ti dica è un esempio, non l'hai capito pazienza
    scusa!

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ho riletto più attentamente il codice:
    A) Non usare id numerici id="1" <-- no id="uno" <--si
    B) Verifica tutti quei calcoli (più che uno script js sembra algebra)
    Se vuoi un sostegno maggiore metti una pagina demo pubblica, da copiare, testare, etc...
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    C'è una ragione per cui ho usato id numerici: in questo modo posso calcolarmi la posizione di un box precedente o successivo. Non so come stai messo in algebra, ma sono calcoletti stupidissimi, se vuoi te li posto. Poi se mi dici che la stessa cosa si può fare anche senza calcoli matematici ben venga.

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Scusa ma mi sembri tu usi un tono polemico, fatichi a capire gli esempi (il div), non rilevi l'ironia (algebra), discussi sulla sintassi (id non numeri è un consiglio alcuni browser non li ritengono validi poi se non lo vuoi fare non farlo) dato che si sviluppa operazioni anche più complesse senza usare i numeri negli id, si ritengo si possa fare (per questo t'ho chiesto un link) e probabilmente anche senza calcoli, comunque ritengo ci sia una certa difficoltà comunicativa e credo si meglio che lasci a utenti più pazienti e preparati di me.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Ti chiedo scusa allora.
    Starò più attento la prossima volta.

  10. #10
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Te la prospetto semplice: nel tuo computer esistono due versini della pagina: una nella cache nella quale viene memorizzata non appena arriva, ed una nella RAM nella quale viene, come tutti i dati di un programma, depositata e modificata affinche' il browser la possa mostrare.

    Ovviamanete quando chiedi in sorgente il computer ti mostra la copia nella cache... mentre le modifiche in tempo reale sono sempre sulla RAM

    Comunque mi sono permesso di riscriverlo e alla prova il server riceve correttamente i nuovi valori... a prescindere da cosa ti mostra il sorgente della pagina.
    codice:
    <html>
     <head>
    <script>
    /* prende la coppia di valori della riga "row" e li sposta su di una posizione poi prende la 
    coppia di valori della riga "row-1" e li piazza nella riga "row" */
    function up(irow){				
    	var prev_valore_campo_a = document.getElementById('campo_a'+(irow)).value;
    	var prev_valore_campo_b = document.getElementById('campo_b'+(irow)).value;
    	document.getElementById('campo_a'+irow).value = document.getElementById('campo_a'+(irow-1)).value;
    	document.getElementById('campo_b'+irow).value = document.getElementById('campo_b'+(irow-1)).value;
    	document.getElementById('campo_a'+(irow-1)).value = prev_valore_campo_a;
    	document.getElementById('campo_b'+(irow-1)).value = prev_valore_campo_b;
    }
    
    /* duale della funzione up() */
    function down(irow){
    	var prev_valore_campo_a = document.getElementById('campo_a'+(irow)).value;
    	var prev_valore_campo_b = document.getElementById('campo_b'+(irow)).value;
    	document.getElementById('campo_a'+irow).value = document.getElementById('campo_a'+(irow+1)).value;
    	document.getElementById('campo_b'+irow).value = document.getElementById('campo_b'+(irow+1)).value;
    	document.getElementById('campo_a'+(irow+1)).value = prev_valore_campo_a;
    	document.getElementById('campo_b'+(irow+1)).value = prev_valore_campo_b;
    }
    </script>
     </head>
     <body>
    <form action="http://127.0.0.1/test.asp" method="post">
    <table><tr><td>
    <input type="text" id="campo_a1" name="valore_a1" value="A" size="50"/>
    <input type="text" id="campo_b1" name="valore_b1" value="AA" size="10"/>
    <input type="button" value="UP" disabled="disabled">
    <input type="button" value="DOWN" onClick="down(1);">
    
    </td></tr>
    <tr><td>
    <input type="text" id="campo_a2" name="valore_a2" value="B" size="50"/>
    <input type="text" id="campo_b2" name="valore_b2" value="BB" size="10"/>
    <input type="button" value="UP" onClick="up(2);">
    <input type="button" value="DOWN" onClick="down(2);">
      
    </td></tr><tr><td>
    <input type="text" id="campo_a3" name="valore_a3" value="C" size="50"/>
    <input type="text" id="campo_b3" name="valore_b3" value="CC" size="10"/>
    <input type="button" value="UP" onClick="up(3);">
    <input type="button" value="DOWN" disabled>
      
    </td></tr></table>
    <input type="submit" value="Test"></form>
     </body>
    </html>
    Occhio agli ID usati
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.