Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
compilazione di celle da parte dell'utente
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
alternat
Mortale pio
Mortale pio


Registrato: 28/11/05 17:21
Messaggi: 26

MessaggioInviato: 14 Feb 2006 11:36    Oggetto: compilazione di celle da parte dell'utente Rispondi citando

vorrei fare una cosa del genere: consentire ad un utente di inserire del testo in una cella di una tabella, in modo che il testo non sia diverso dal resto della tabella stessa.

una cosa tipo

- bottone "clicca per inserire un commento"
- si apre una finestrella popup di input in cui l'utente può scrivere il suo commento
- bottone "invia" nella finestrella
- il commento spunta magicamente nella apposita cella della tabella nella pagina principale.

a questo punto, il bottone può trasformarsi in "clicca per modificare il commento" oppure sparire per evitare che altri utonti possano modificare il commento inserito.

Posso gestire il contenuto di una casella form/textarea?
Riesco a farlo con HTML in altri modi?
devo mettermi a cercare un Javascript in giro per la rete?
vorrei evitare di utilizzare php o asp perché già sono una schiappa con HTML, figuriamoci con linguaggi superiori...

grazie a tutti

p.s.
lo so che ci sono miliardi di esempi in giro per la rete...
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 14 Feb 2006 11:49    Oggetto: Rispondi citando

Quello che hai scritto è tranquillamente fattibile con javascript.
Con window.open puoi aprire le finestre popup e da quelle con window.opener puoi riferirti alla finestra chiamante. Ogni cosa sulla pagina è un oggetto al quale puoi accedere, per il contenuto di una cella io userei qualcosa tipo:
Codice:
document.getElementById("idtabella").rows(n_riga).cells(n_cella).innerText


Se usi solo IE puoi utilizzare document.all e le Modal Dialog che ti permettono di vincolare l'utente sulla popup prima di poter cambiare la pagina chiamante.

Ah... ovviamente se ho javascript o le pupup bloccate tutta la tua procedura non funzionerà.
Top
Profilo Invia messaggio privato
Marcolino
Semidio
Semidio


Registrato: 27/04/05 15:26
Messaggi: 257
Residenza: Udine e dintorni

MessaggioInviato: 14 Feb 2006 15:47    Oggetto: Rispondi citando

horus ha scritto:

Se usi solo IE puoi utilizzare document.all e le Modal Dialog che ti permettono di vincolare l'utente sulla popup prima di poter cambiare la pagina chiamante.


Non è che puoi vincolare un utente ad un tipo di browser, qundi un sistema crossbrowsing è indispensabile.
Per il blocco delle popup non è un vero problema, perché basta avvisare prima l'utente, dicendo che queste popup fanno parte del sito e quindi di sbloccarle, così come pure per javascript.
Certo non funzionerà su browser che javascript proprio non ce l'hanno, ma forse non è un'applicazione che fa dell'accessibilità il suo forte, altrimenti quanto meno avrebbe bisognodi un grosso supporto lato server, proprio per sopperire una mancanza di javascript.
Top
Profilo Invia messaggio privato HomePage
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 14 Feb 2006 16:02    Oggetto: Rispondi citando

Marcolino ha scritto:
Non è che puoi vincolare un utente ad un tipo di browser, qundi un sistema crossbrowsing è indispensabile.

Se faccio un'applicazione per una intranet dove l'unico browser ufficiale ammesso è IE allora posso. Personalmente la ritengo una pratica sbagliata ma ti garantisco che è in uso.

Marcolino ha scritto:
Per il blocco delle popup non è un vero problema, perché basta avvisare prima l'utente, dicendo che queste popup fanno parte del sito e quindi di sbloccarle, così come pure per javascript.

Già, io però ad esempio non abilito popup e js in tutti i siti che me lo chiedono, semplicemente cerco se ci sono altri siti che forniscono gli stessi contenuti senza impormi nulla.

Marcolino ha scritto:
Certo non funzionerà su browser che javascript proprio non ce l'hanno, ma forse non è un'applicazione che fa dell'accessibilità il suo forte, altrimenti quanto meno avrebbe bisognodi un grosso supporto lato server, proprio per sopperire una mancanza di javascript.

Infatti, sta ad alternat decidere cosa usare e che target vuole raggiungere, noi possiamo solo limitarci a presentare i pro e i contro delle varie possibilità.
Top
Profilo Invia messaggio privato
alternat
Mortale pio
Mortale pio


Registrato: 28/11/05 17:21
Messaggi: 26

MessaggioInviato: 14 Feb 2006 17:05    Oggetto: Rispondi citando

ok, intanto ringrazio.

non mi è ancora chiaro come passare il valore della stringa (in questo caso, il contenuto del campo <textarea> -o quel che sarà- nella pagina di popup) dalla pagina di popup alla pagina principale... non sono un programmatore, e sto affrontando il JavaScript da poco, ma sento che ci riuscirò Very Happy

giusto per chiarire, la pagina sarà su internet, quindi anche se la maggior parte di accessi sono via IE, la soluzione non dovrebbe essere monopiattaforma.
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 15 Feb 2006 09:52    Oggetto: Rispondi citando

Bene.

Per quanto riguarda il multipiattaforma io uso in genere getElementById e fino ad ora non mi sono trovato male.

Per passare il valore puoi usare una funzione javascript inserita nella pagina di popup che al click prende il testo della textarea:
Codice:
var testo = document.getElementById("id_texatrea").value;

e poi lo scrivi nella tabella della pagina principale:
Codice:
window.opener.document.getElementById("idtabella").rows(n_riga).cells(n_cella).innerText = testo;

Poi, se vuoi, chiudi la popup
Codice:
window.close();


Dovrei aver azzeccato le maiuscole ma non l'ho provato, se ti dice metodo o oggetto non valido comincia a controllare quelle. Smile
Top
Profilo Invia messaggio privato
alternat
Mortale pio
Mortale pio


Registrato: 28/11/05 17:21
Messaggi: 26

MessaggioInviato: 15 Feb 2006 10:17    Oggetto: Rispondi citando

grazie, grazie, grazie.

adesso provo, poi ti faccio sapere.

tanto per essere sicuri, l'ID degli oggetti devo esplicitarlo nel tag degli oggetti stessi, giusto? una cosa tipo <table id="tabella1>...

non è poi così complicato, tutto sommato, una volta acquisiti i concetti (il problema è che non li ho ancora "proprio" acquisiti... Very Happy ). Qualche millennio fa avevo fatto qualche esperienza con Hypercard su Mac, e JS non è molto diverso.
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 15 Feb 2006 11:23    Oggetto: Rispondi citando

alternat ha scritto:
tanto per essere sicuri, l'ID degli oggetti devo esplicitarlo nel tag degli oggetti stessi, giusto? una cosa tipo <table id="tabella1>...

Esatto. Intanto ho fatto una piccola prova e ho scoperto che per funzionare con gli altri browser (ho provato IE, FF e Opera) devi usare una forma leggermente diversa da quella che ti ho scritto prima:
Codice:
<html>
<body>
<table id="t">
<tr><td>a</td></tr>
</table>
<script type="text/javascript">
alert(document.getElementById("t").rows[0].cells[0].innerHTML);
</script>
</body>
</html>
Top
Profilo Invia messaggio privato
alternat
Mortale pio
Mortale pio


Registrato: 28/11/05 17:21
Messaggi: 26

MessaggioInviato: 15 Feb 2006 11:45    Oggetto: Rispondi citando

visto che sei consì gentile, ti sfrutto... Very Happy

la parte facile funziona.
la finestra di partenza apre il popup con questo codice:
Codice:

<html>
<body>
<table width="100%" border="1" id="tabella">
<tr>
<td>xx
<td>yy
<td>zz
</tr>
</table>

<a href="#" onclick="javascript:window.open('provapopup.htm','popup','width=600,height=150');">apri

popup</a>

</body>
</html>


ma il popup, (il file si chiama "provapopup.htm", ovviamente) con questo codice:

Codice:

<html>
<body>

<form>
<textarea id="commento">
</textarea>
</form>

<script type="text/javascript">
function prelievo() {
var testo = document.getElementById("commento").value;
window.opener.document.getElementById("tabella").rows(0).cells(0).innerHTML = testo;
window.close();
}
</script>

<a href="#" onClick="prelievo();">clicca per inviare</a>

</body>
</html>

non fa assolutamente nulla

Da bravo 'gnorantone, ho pensato di definire una funzione che contiene le tue istruzioni per richiamarla nel tag (a)(/a), ma cliccando non succede niente.
Evidentemente c'è qualcosa che non funziona nella funzione ( Very Happy ). Avevo provato anche a mettere la definizione della funzione sotto <head>, ma non cambiava niente.
Dove sto sbagliando?
Top
Profilo Invia messaggio privato
Marcolino
Semidio
Semidio


Registrato: 27/04/05 15:26
Messaggi: 257
Residenza: Udine e dintorni

MessaggioInviato: 15 Feb 2006 12:20    Oggetto: Rispondi citando

Io lavoro tramite una intranet ma ho firefox perché mi rifiuto di lavorare con IE Laughing

Comunque, la tua popup, o meglio il javascript al suo interno si riferisce ad essa probabilmente e quindi non fa nulla.

Usa FF e apri la Console Javascript e dicci che errori riporta.
Top
Profilo Invia messaggio privato HomePage
alternat
Mortale pio
Mortale pio


Registrato: 28/11/05 17:21
Messaggi: 26

MessaggioInviato: 15 Feb 2006 12:55    Oggetto: Rispondi citando

mmh... allora, FF non ce l'ho a disposizione adesso, ma ho il debugger di NVu, che dovrebbe essere basato proprio sull'editor HTML di Firefox... comunque:

prima riga di script
Codice:
documento.getElementById("commento") has no properties

seconda riga di script
Codice:
window.opener has no properties


ti dicono qualcosa?
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 15 Feb 2006 13:26    Oggetto: Rispondi citando

Molto semplicemente ff è un po' più restrittivo per la sintassi, usa le quadre per gli indici e funzionerà (ho provato ora):
Codice:
<script type="text/javascript">
function prelievo() {
var testo = document.getElementById("commento").value;
window.opener.document.getElementById("tabella").rows[0].cells[0].innerHTML = testo;
window.close();
}
</script>
Top
Profilo Invia messaggio privato
alternat
Mortale pio
Mortale pio


Registrato: 28/11/05 17:21
Messaggi: 26

MessaggioInviato: 15 Feb 2006 13:29    Oggetto: Rispondi citando

giusto per chiarire, lo script non funziona nemmeno sotto IE... comunque, adesso provo a cambiare le parentesi.

tra l'altro, non chiude nemmeno la finestra popup... mah.

[edit]

ok, funziona. Very Happy Very Happy Very Happy
ti dedicherò un monumento, Horus (non devo nemmeno scolpirlo, vado a rubarlo al Museo Egizio... Very Happy )
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 15 Feb 2006 13:59    Oggetto: Rispondi citando

alternat ha scritto:
ok, funziona. Very Happy Very Happy Very Happy

Bene.

Per il monumento non stare a commettere reati per così poco. Laughing Wink
Top
Profilo Invia messaggio privato
alternat
Mortale pio
Mortale pio


Registrato: 28/11/05 17:21
Messaggi: 26

MessaggioInviato: 15 Feb 2006 14:57    Oggetto: Rispondi citando

mm... però, c'è un però.

per il fatto che la pagina di partenza è in HTML, è impossibile andare a modificare fisicamente il codice che risiede sul server, quindi è vero che posso cambiare il testo localmente, ma appena ricarico la pagina ritorna tutto alle impostazioni originarie (cioè senza il commento)...
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 15 Feb 2006 15:19    Oggetto: Rispondi citando

Ovviamente è come dici tu. Per poter agire sul server devi usare script lato server (asp/php).

Il consiglio che ti posso dare è quello di utilizzare quanto già realizzato finora ma salvare il testo inserito anche in un campo hidden di un form nella pagina con la tabella. Successivamente puoi fare la submit via javascript oppure chiedere all'utente di premere un pulsante e via asp/php salvare quanto inserito su un db o un file di testo.

Dopodiché per visualizzarlo puoi provare a leggere questa discussione.
Top
Profilo Invia messaggio privato
Marcolino
Semidio
Semidio


Registrato: 27/04/05 15:26
Messaggi: 257
Residenza: Udine e dintorni

MessaggioInviato: 15 Feb 2006 15:31    Oggetto: Rispondi citando

Scusa ma perché salvare il testo in un campo hidden?
Dalla popup invia direttamente il testo al server (via form) quindi la chiude e riaggiorna la pagina principale, sarà cura di php/asp di presentare i dati appena inseriti.

Così chiede all'utente di premere un solo tasto (quello sulla popup) e non pure nella pagina di provenienza e tutto risulterebbe più elegante. O no?

m.
Top
Profilo Invia messaggio privato HomePage
alternat
Mortale pio
Mortale pio


Registrato: 28/11/05 17:21
Messaggi: 26

MessaggioInviato: 15 Feb 2006 15:49    Oggetto: Rispondi citando

grazie comunque, da solo non ce l'avrei fatta, conosco troppo poco JS per integrarlo con HTML.

però la funzione mi è riuscita!!!
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 15 Feb 2006 16:22    Oggetto: Rispondi citando

Marcolino ha scritto:
Scusa ma perché salvare il testo in un campo hidden?

In effetti facendo una modifica per volta non ha senso, ne acquisterebbe solo se fai modificare n commenti e poi li salvi tutti con un invio solo.
Top
Profilo Invia messaggio privato
alternat
Mortale pio
Mortale pio


Registrato: 28/11/05 17:21
Messaggi: 26

MessaggioInviato: 15 Feb 2006 16:49    Oggetto: Rispondi

per continuare...

il form invia il contenuto della textarea al server, ed il server lo manipola in qualche modo.
se ho capito giusto, io posso dirgli dove metterlo, e come, utilizzando la funzione action di form. In questo caso posso dirgli di andarlo ad infilare in un file (.txt?) di cui dichiaro il nome (che può essere diverso per ogni pagina in cui compare) e che posso richiamare dall'altra pagina?
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 2 ore
Vai a 1, 2  Successivo
Pagina 1 di 2

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi