La validazione in tempo reale del nome utente è buona o cattiva?

5

Ho un modulo semplice per l'utente che si iscrive al mio sito; con campi email, username e password. Ora stiamo cercando di implementare una convalida Ajax in modo che l'utente non debba pubblicare il modulo per scoprire se il nome utente è già stato preso. Posso farlo sia su evento keyup che su testo sfocatura . La mia domanda è, quale di questi è davvero il modo migliore di fare?

keyUp

Dal punto di vista dell'utente, sarebbe bene se la convalida fosse fatta come e quando stanno scrivendo, (su evento key up) - ovviamente, aspetto per mezzo secondo che veda se l'utente interrompe la digitazione prima di disattivare la richiesta e l'utente può apportare immediatamente le eventuali modifiche.

Ma questo significa che sto inviando più richieste che se avessi convalidato il nome utente sull'evento Sfocatura .

Sfocatura

Il numero di richieste sarà molto più basso quando la convalida viene eseguita sull'evento di sfocatura, ma questo significa che l'utente deve effettivamente andare via dalla casella di testo, osservare il risultato della convalida e, se necessario, tornare indietro per fare qualsiasi cambia e ripeti l'intero processo fino a quando non lo fa bene.

Ho dato uno sguardo veloce a google, tumblr, twitter e nessuno ha effettivamente convalidato il nome utente sugli eventi keyup, (diamine, tubmlr aspetta che il modulo venga pubblicato) ma posso giurare che ho visto convalide keyup in un sacco di posti anche

Quindi, tornando alla domanda, le convalide di convalida saranno troppe per il server, è un sovraccarico inutile? o vale la pena prendere questi colpi per offrire all'utente un'esperienza migliore?

ps: tutte le mie convalide regex ecc sono già state fatte su javascript e solo quando passa tutti questi altri criteri invia una richiesta al server per verificare se esiste già un nome utente. (E il server sta facendo un select count(1) from user where username = '' - niente di sostanziale, ma ancora abbastanza da occupare qualche risorsa)

pps: Sono su asp.net, stack MS SQL., se questo è importante.

    
posta iamserious 13.04.2012 - 12:08
fonte

5 risposte

8

Dal punto di vista dell'utente, vorrei sapere se qualunque cosa sto facendo in un determinato momento fallirà il prima possibile . Questo è il motivo per cui suggerisco di andare alla convalida della key-up. Poche ragioni per questo:

  • offre all'utente una piacevole interazione in tempo reale e un senso di sicurezza (il sistema sta osservando se fai ciò che dovresti correttamente)
  • aiuta l'utente a concentrarsi su un'attività alla volta (selezionando il nome in questo caso)

Il problema con la convalida della sfocatura (o qualsiasi altra perdita di focus ) è che nel momento in cui stai facendo la convalida, probabilmente l'utente è interessato a qualcos'altro. Mi aspetterei che una volta che riempirò il campo del nome, procederò semplicemente con la forma e non mi preoccuperò più del nome finché non deciderò di convalidarlo (o inviare). Situazione in cui ho finito con il nome utente e dico, ho iniziato a pensare a dove ho messo il mio certificato di nascita in modo da poter verificare quale fase fosse lunatica al momento della nascita, e poi improvvisamente il sistema mi dice che devo tornare a controlla che il nome utente sia di nuovo indesiderato.

Tieni presente che questo potrebbe essere sufficiente per alcuni utenti di lasciare il tuo sito web e non tornare mai più a questo punto. E non sto esagerando qui, molte volte ho visto persone (me compreso), che avrebbero lasciato l'app o il sito web / ne avrei scelto uno diverso per i motivi più ridicoli come "questo pulsante non fa quello che penso io " o " perché non posso trascinare questa scheda? ". Ricorda che vuoi non solo attirare l'utente , ma ancora più importante: tienilo e fallo tornare . E la frustrazione con la prima interazione che avrà con il tuo servizio non aiuterà a raggiungere questo: -)

Quindi - lascia che gli utenti decidano su cosa vogliono focalizzarsi alla volta. O vai con la convalida in tempo reale come tipi di utenti, o la convalida del totale generale al modulo di invio.

Per di più, devi pensare a come quelle select count(1) ... query avranno un impatto sul tuo server. Se è pronto per elaborare migliaia di altre query alla volta, extra 3 per controllare il nome utente non sarà troppo diverso. Per non parlare, la creazione di un account utente è un processo che non avviene spesso (di solito solo una volta per utente). Non ottimizzare anticipatamente , controlla se tali query costituiranno un problema.

    
risposta data 13.04.2012 - 12:54
fonte
2

crea un timeout di 1 secondo sulla chiave e cancella quello precedente

<input onkeyup="cleartimout(lastTimeout);lastTimeout=setTimeout(validate,1000);">

in questo modo i battitori veloci non attivano una convalida su ogni keyup ma quando l'utente smette di digitare il nome utente viene convalidato e ottiene un feedback sul fatto che sia libero

    
risposta data 13.04.2012 - 12:16
fonte
1

Quando usi la chiave stai andando al server dopo ogni battitura? C'è un limite minimo per la lunghezza del nome utente? Ci sono altre condizioni che il nome deve soddisfare. In tal caso, è possibile controllare prima questi dal lato client, prima di tornare al server e scoprire se il nome è valido. Se questo è l'approccio che stai già facendo, allora non farai troppe chiamate al server, quindi usare la chiave sembra essere la migliore e la più reattiva.

Come dici usando blur, il tuo utente ha lasciato la casella di testo e forse il focus è altrove.

    
risposta data 13.04.2012 - 14:05
fonte
1

Preferirei non dover creare un altro nome utente e password. OAuth / OpenId è la strada da percorrere. Ciò detto, nulla è più fastidioso dell'invio di un modulo solo per ottenere un errore "nome utente già utilizzato". Non mi ricordo di aver visto un modulo di iscrizione che si convalida sulla chiave. La concentrazione persa è accettabile per me. E come hai menzionato meno loquace dal punto di vista tecnico.

    
risposta data 13.04.2012 - 16:34
fonte
0

Avere una lunghezza del nome utente richiesta e quando si avvicina, iniziare a prepararsi a informare l'utente indipendentemente dal fatto che sia univoco.

A volte è meglio fargli sapere cosa è disponibile rispetto a ciò che è stato preso. Ci deve essere un problema di sicurezza se qualcuno può semplicemente inviare le chiavi a questo campo e catturare tutti i tuoi nomi utente.

    
risposta data 13.04.2012 - 18:01
fonte

Leggi altre domande sui tag