Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di ciat
    Registrato dal
    May 2009
    Messaggi
    139

    Mantenere il focus su una textbox?

    Ciao a tutti sto scrivendo una chat in aspnet usando le estensioni ajax. La chat molto semplicemente è composta di una textbox multiline dove ci sono i messaggi scritti, una textbox normale per scrivere e un pulsante per inviare il messaggio. Funziona tutto bene, tranne un particolare. All' aggiornamento della pagina explorer perde il focus sulla textbox usata per scrivere. Usando il metodo .focus() lato server viene di nuovo selezionata, ma il cursore è sul primo carattere della textbox mentre io vorrei che fosse sull' ultimo. Succede solo con explorer. Sapete dirmi come fare a mantenere il focus sulla fine della textbox?

    PS: Se è un problema di javascript spostate pure la discussione

  2. #2
    si, potresti risolvere con una semplice istruzione javascript.
    ..... però non me la ricordo......

  3. #3
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Il concetto è questo, e arrivo a scriverti un modello; provalo un po' con diversi Navigatori e a combinarlo nel "quanto" del tuo sistema ...
    codice:
    <html><head>
    <script type="text/javascript">
    
    function moveFocus(){
    
     document.getElementsByName("msg")[0].focus();
    
     };
    
    </script>
    </head>
    <body onload="moveFocus();">
    
    <input name="msg" type="text">
    </body></html>
    Per individuare l' Elemento su cui JS deve intervenire,
    ho usato:

    document.getElementsByName

    ma non è l' unico:

    document.getElementById

    e, se l' input di testo è in un FORM:

    document.forms['nome_form'].msg

  4. #4
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530

    riprendere il messaggio in una variabile

    Originariamente inviato da ciat
    .. il metodo .focus() lato server .., ma il cursore è sul primo carattere .. io vorrei che fosse sull' ultimo. Succede solo con explorer.
    Pare che IExplorer voglia la valorizzazione del value dopo il focus()

    document.getElementsByName("msg")[0].focus();
    document.getElementsByName("msg")[0].value="testo messaggio";

    che per il recupero del testo messaggio in corso (non dovrebbe sparire dopo il Refresh, ma già si ritrova nell' input), diventa:

    document.getElementsByName("msg")[0].focus();
    document.getElementsByName("msg")[0].value = document.getElementsByName("msg")[0].value;


    Se ti torna, puoi meglio scrivere così la function
    codice:
    function moveFocus(){
    
     campo = document.getElementsByName("msg")[0];
    
     campo.focus();
     campo.value = campo.value;
    
     };

  5. #5
    Utente di HTML.it L'avatar di ciat
    Registrato dal
    May 2009
    Messaggi
    139
    Questa soluzione va benissimo non usando ajax per gestire la chat. Infatti non ho un evento onload del body ogni volta che si aggiorna il contenuto della chat. Nel mio caso si aggiorna solo la textarea che contiene le varie righe. Il codice che mi hai scritto tu funziona, ma devo applicarlo ad un altro evento che si verifichi ogni volta. Non so che pesci pigliare..

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da ciat
    Questa soluzione va benissimo non usando ajax per gestire la chat. Infatti non ho un evento onload del body ogni volta che si aggiorna il contenuto della chat. Nel mio caso si aggiorna solo la textarea che contiene le varie righe. Il codice che mi hai scritto tu funziona, ma devo applicarlo ad un altro evento che si verifichi ogni volta. Non so che pesci pigliare..
    Un evento da sfruttare l'hai: alla fine della ricezione dei dati con ajax...

    ciao
    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

  7. #7
    Utente di HTML.it L'avatar di ciat
    Registrato dal
    May 2009
    Messaggi
    139
    Che evento ho alla fine della ricezione dei dati con ajax?
    L' unico evento che ho alla fine della ricezione dei dati è lato server.
    Se si può intercettare l' evento lato client io non sono capace a farlo.

  8. #8
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da ciat
    Che evento ho alla fine della ricezione dei dati con ajax?
    L' unico evento che ho alla fine della ricezione dei dati è lato server.
    Se si può intercettare l' evento lato client io non sono capace a farlo.
    Perdona, evidentemente sono stato poco chiaro

    Intendo dire che non hai bisogno di avere ed utilizzare un evento (in termini di programmazione ad oggetti) vero... e' sufficiente che al termine delle operazioni che esegui alla ricezione dei dati provenienti dalla richiesta ajax tu richiami esplicitamente i metodi per posizionare il cursore...

    ...
    // ho ricevuto e utilizzato la risposta AJAX (non conosco il codice che usi)
    // quindi...
    campo = document.getElementsByName("msg")[0];
    campo.focus();
    campo.value = campo.value;
    // infine esco dalla funzione che tratta AJAX
    }

    Se e' ancora poco chiaro mi riscuso... e spero che passi qualcun'altro

    ciao
    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

  9. #9
    vediamo se ho capito:

    tu hai un metodo che sfruttando ajax aggiorna il conenuto della textbox.
    sempre lato server fai il focus().

    qui ti sei accorto che il focus lato server mette solo il focus ma non come lo voi tu.
    la funzione MoveFocus suggerita viene lanciata solo durante il OnLoad javascript, ma naturalmente funziona solo la prima volta. tu vorresti farla funzionare ad ogni aggiornamento ajax.

    ho capito?

    se si ti serve questo
    Codice PHP:
    function pageLoad(senderargs

        var 
    manager Sys.WebForms.PageRequestManager.getInstance(); 
        
    manager.add_endRequest(EndRequest); 


    function 
    EndRequest(sendersargs

       if (
    args.get_error() != undefined
       { 
          
    //c'è un errore 
       
    } else { 
          
    //faccio le mie operazioni di movefocus


  10. #10
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530

    onFocus

    Originariamente inviato da ciat
    ... Usando il metodo .focus() lato server viene di nuovo selezionata, ma il cursore è sul primo carattere ...
    Visto che arriva già il .focus() lato server, potresti anche associare l' evento alla textbox e far partire così la mia funzione:

    &#60;input name="msg" type="text" onfocus="moveFocus();" /&#62;

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.