Newsgroup: it.comp.lang.javascript
Titolo: impostare valori all'evento onkeyup

ciao
mi serve un aiuto: ho un form composto da un input di tipo "text" ed un
input di tipo "hidden".
Vorrei che all'evento "onkeyup" sul primo input venga impostato un
valore nel campo nascosto che poi verrà inviato ad uno script cgi
quando viene premuto "submit". Questo serve a controllare che il form
sia stato compilato usando una tastiera.
Come posso fare?

Ale ha scritto:

semplicemente doresti avere un codice del genere:
<form name="formNAME" ... >
  <input type = "text" ... onKeyUp ="nascosto.value='valore da
assegnare' " />
  <input type = "hidden" name = "nascosto" />
  ....
</form>
spero di essere stato chiaro.
Saluti

 Saluti
Sì è chiaro, grazie.
Un'altra domanda: e se volessi fare in modo che il valore da impostare
non sia visibile nel listato html della pagina, si può fare? Magari
assegnando il valore tramite una funzione definita in un file
javascript esterno o qualcosa del genere...

Ale ha scritto:

certo!
stesso codice di prima, unica differenza:
 <input type = "text" ... onKeyUp ="myFunction(nascosto) " />
poi nel file js esterno
function myFunction(element) {
  element.value = "valore";
}

 Sě č chiaro, grazie.
'spetta, secondo me non č quel che vai cercando. Da quel che ho capito
deve servirti per distinguere un umano da un bot, dico bene? Quindi vuoi
che nel campo nascosto vada a collocarsi il testo *digitato*
dall'utente, non un valore preimpostato. E allora:
<input type="text" onkeyup="this.form.nascosto.value=this.value">
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)

 <input type="text" onkeyup="this.form.nascosto.value=this.value">
Beh, se cosi' fosse (ammesso che io abbia capito) il bot fa poca fatica a
mettere lo stesso valore anche nell'altro campo...
Forse invece vuole proprio accertarsi che nel campo l'ultimo valore immesso
sia stato inserito da tastiera e non da un drag&drop, un paste o
quant'altro....

 sia stato compilato usando una tastiera.
Forse non ho compreso le tua esigenze, perň... Se vuoi impedire che la 
procedura venga automatizzata, questo approccio č assolutamente inefficace. 
Chi vuole automatizzare un'operazione che dovrebbe essere svolta da un 
utente umano, non sta a quardare come sono fatti i form HTML, ma esamina 
quello che viene effettivamente trasmesso dal browser (cookie compresi). 
D'altra parte, se fosse cosě facile distingure un umano da un programma, 
non avrebbero inventato il CAPTCHA.
Max

 Max
Allora, mi spiego meglio:
Ho già usato il metodo del captcha per il guestbook ed il modulo dei
contatti e per ora sta funzionando.
Questa cosa del campo nascosto impostato dall'onkeyup la volevo
utilizzare per il login tramite userid e password ad un'area riservata.
Ho notato che ci sono diversi tentativi di accesso all'area riservata
da parte di non umani e, anche se credo sia improbabile che riescano a
trovare userid e password corretti, faccio un report dei vari tentativi
e di quello che viene inserito per tenere la situazione sotto
controllo.
Pensavo che usare il captcha per il login sia un po' scomodo e
fastidioso così vorrei usare l'onkeyup per distinguere tra umani e
non, stabilire così se processare i dati o no e fare il report su due
file diversi a seconda del contenuto del campo nascosto.
Pensate che sia una buona idea?

> Pensate che sia una buona idea?
Ti e' gia' stato detto di no.
E il motivo e' semplice al "non umano" cosa gli cambia farti una richiesta
con uno o piu' campi uguali? Tu crederesti che sia perito del tuo onkeyup
ma in realta' ha banalmente duplicato il valore...

Ugo ha scritto:

Ma naturalmente i valori non sarebbero uguali, questo è ovvio.
Comunque ho già risolto in un altro modo, grazie.

 Comunque ho già risolto in un altro modo, grazie.
E come hai risolto? Se non sono indiscreto. Farebbe piacere saperlo,
visto che il tentativo di fornirti una soluzione non si piò dire sia
mancato.



Certo.
Be' ho pensato ad una soluzione drastica (che in realtà devo ancora
ultimare) e cioè di eliminare la possibilità di fare il login in ogni
pagina del sito ma di mettere il modulo per il login direttamente nelle
pagine appartenenti all'area riservata.
Queste pagine sono in una cartella a parte non accessibile ai motori di
ricerca e non sono linkate alle altre pagine del sito. In questo modo
non dovrebbero essere trovate dai bot ma solo dagli utenti a cui io ho
dato l'indirizzo (e di conseguenza userid e password).
Questa soluzione è compatibile con le mie esigenze e tra l'altro si
adatta meglio al nuovo layout grafico che avrà il mio sito.
Attualmente sto utilizzando la soluzione indicata da Pianoska nel suo
secondo post che sto usando da qualche giorno e finora ha sempre
funzionato in quanto non ho più trovato dati strani nei file di
report.
Grazie a tutti per l'aiuto.

 Grazie a tutti per l'aiuto.
Di niente!