Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problemi a catturare l'evento keyPress

    Ciao a tutti.

    Devo essere proprio un ignorante di primissima classe se non so fare questa cosa e se cercando e ricercando nel forum non ho trovato risposta (ergo, non lo so solo io! ).

    Ho scritto una funzione in Javascript per inviare il forum semplicemente premendo ENTER, potendo quindi evitare di cliccare sull'apposito bottone.

    Con IE funge, con Firefox no. Penso non funzioni perché non riesco a catturare l'evento, ma non so come catturarlo...

    Vi posto la funzione:

    codice:
        function SendOnEnter(e) {
          //alert('Hai premuto enter');
          if (expl4 || expl5 || nets6) {
            e = window.event;
            if (e.keyCode == 13) document.forms[0].submit();
          }
        }
    La funzione è invocata dall'evento onKeyPress inserito nei 2 tag <input> che compongono il form. Prima che me lo chiediate, non è la guardia dell'if il problema.

    Grazie a tutti dell'aiuto e buon 25 Aprile!

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Non e' piu' semplice dotare il form di un pulsante submit nascosto?

    <input type="submit" style="width:1px;height:1px;">

    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

  3. #3
    Ciao br1 e grazie dell'interessamento. La soluzione che proponi, per come l'ho intesa, non si adatta al mio caso. Cercherò di spegare meglio cos'è che la pagina dovrebbe fare.

    Al caricamento la pagina visualizza un form con 2 campi di testo e un bottone che non è realizzato con il tag <input>. I 2 campi di testo servono a permettere l'autenticazione dell'utente tramite inserimento di login e password.
    Quello che vorrei ottenere è che all'apertura della pagina il focus si sposti nel campo di testo relativo all'inserimento della login e che, alla pressione del tasto ENTER, avvenga la submit del form.

    Come ottengo questo comportamento in IE? Usando queste 2 funzioni (le metto entrambe per comodità, tanto sono brevi ):

    codice:
        function SetFocus () {
          document.forms[0].elements[0].focus();
        }
        
        function SendOnEnter(e) {
          if (expl4 || expl5 || nets6) {
            e = window.event;
            if (e.keyCode == 13) document.forms[0].submit();
          }
        }
    SetFocus() è invocata dall'evento onFocus inserito nel tag <body>. Non ho usato onLoad perché, se perdo il fuoco sulla finestra per qualsiasi ragione, quando ci torno vorrei ritrovarcelo e con la navigazione a schede succede molto spesso.
    SendOnEnter è invocata dall'evento onKeyPress inserito in entrambi i tag <input> utilizzati per generare i campi di testo.

    In Firefox questa soluzione non funziona.
    Il primo problema è la navigazione a schede. Quando apro una nuova pagina, se questa è la prima presente nella finestra di Firefox, allora il focus è OK (grazie all'evento onLoad presente nel tag <body>) ma se questa viene aperta in una nuova scheda che non ha il focus di default, quando clicco sul suo tab, la scheda prende il focus, ma questo non viene poi assegnato al campo di testo della login.
    Usando il tuo suggerimento per l'invio, questo funziona se non inserisco nulla nei campi, ma una volta che sono in un campo testo, il bottone nascosto perde il focus e la pressione di ENTER non sortisce effetto. Inoltre, poiché il tag <input> prende lui il focus, questo viene tolto al campo di testo e se invoco di nuovo la setFocus (come si legge nel codice più sotto), riguadagno il focus sul campo di testo, e lo riperdo sul bottone nascosto.

    Per facilitare un'eventuale soluzione, posto il codice della pagina, che è piuttosto breve:

    codice:
    <body onFocus="SetFocus()" onLoad="SetFocus()">
    <table class="principale" border="0" cellpadding="0" cellspacing="0" width="740">
      <tr>
        <td colspan="2">
          [img]imm/logo-viola.jpg[/img]
        </td>
      </tr>
      <tr>
        <td colspan="2" align="right" valign="top">
          
    
          <span class="tit_viola">Esegui la procedura di accesso</span>
        </td>
      <tr>
        <td>
          <form action="php/inizio.php" method="post">
          
    
          <table border="1" bordercolor="#8F8F8F" cellpadding="4" width="400">
          <tr>
            <td bgcolor="#9966CC"><span class="intestazione">Modulo per l'autenticazione</span></td>
          </tr>
          <tr>
          <td>
            <table border="0" bgcolor="#EDE3F8" cellpadding="2" width="100%">
              <tr>
                <td><span class="txt_viola">Login:</span></td>
                <td><input type="text" name="login" size="40" maxlength="15"
                     onKeyPress="SendOnEnter()"></td>
              </tr>
              <tr>
                <td><span class="txt_viola">Password:</span></td>
                <td><input type="password" name="password" size="40" maxlength="15" 
                     onKeyPress="SendOnEnter()"></td>
              </tr>
            </table>
          </td>
          </tr>
          </table>
          <input type="submit" style="width: 1px; height: 1px; border-color: transparent; 
                                      background: transparent">
        <script>SetFocus()</script>
          </form>
        </td>
        <td valign="top" align="center">
          
    
          
    
    
            Per proseguire nella navigazione è necessario autenticarsi.
          </p>
          
    
          <a href="javascript: document.forms[0].submit();" 
                   onmouseover="images[1].src='imm/btn-entraviola-on.gif'; status='Entra in Movie Point'; return true"
                   onmouseout="images[1].src='imm/btn-entra-off.gif'; status=''; return true">
            [img]imm/btn-entra-off.gif[/img]</a>
        </td>
      </tr>
    </table>
    </body>
    Grazie a chiunque voglia provare a darmi un suggerimento!

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.