Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di *Ray*
    Registrato dal
    Oct 2000
    Messaggi
    495

    JS: focus al primo elemento di un form dinamico

    Ciao a tutti,

    avrei bisogno di fare in modo che il primo elemento di un form che genero via software riceva il focus.

    Il punto e' che non posso agganciarmi al body onload perche', essendo la pagina dinamica, il nome del form object da attivare lo so solo nel momento istantaneo in cui lo genero.

    Non so a priori il nome o ne' l'id del'oggetto al quale devo dare il focus fino a che non lo genero.

    Avrei bisogno di fare qualcosa del genere:

    <input type="provafocus" onload="setfocus(myself)">

    Chi ha capito quello che intendo... spero di essere stato circa chiaro

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Se e' l'unico (o il primo) form ed il primo elemento dichiarato al suo interno e' quello che cerchi puoi usare:

    <body onload="document.forms[0].elements[0].focus()">

    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
    Utente di HTML.it L'avatar di *Ray*
    Registrato dal
    Oct 2000
    Messaggi
    495
    Putroppo non e' questo il caso.

    L'evento onLoad e' associabile solo al body? fosse associabile anche al <form> forse sarei a posto. Potrei dare una ID particolare al primo elemento e dargli il focus cosi'. Fa un po' schifo ma e' meglio di niente.

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Non e' molto chiaro quanto tu possa modificare il sorgente della pagina... ma se conosci i nomi del form e dell'oggetto a cui dare il focus dopo che li hai creati, puoi aggiungere uno script al termine della pagina:

    ...
    <script>document.nomeForm.nomeInput.focus();</script>
    </body>
    </html>

    forse non ho capito nemmeno ora

    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

  5. #5
    Utente di HTML.it L'avatar di *Ray*
    Registrato dal
    Oct 2000
    Messaggi
    495
    Si, cosi' forse lo potrei fare in effetti. Il fatto e' che non sono sicuro sia "pulito" infilare JavaScript al di fuori dell'header, cosi'.. brutalmente.

    Potrei metterlo immediatamente dopo avere generato il controllo di <input>

    Qualcosa tipo:

    <input name="prova" id="prova">
    <script language="Javascript"> codice </javascript>

    Non e' il massimo dell'eleganza ma forse funziona..

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Se generi dinamicamente la pagina con php puoi fare cosi...

    codice:
    <?
    //---- da qui comincia la bufferizzazione del html
    ob_start();?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    function setfocus(anId) {
     document.getElementById(anId).focus();
    }
    //-->
    </script>
    
    </head>
    <body onload="setfocus('XXXXXXX')">
    <? 
    $primoElemento = "";
    for($i=0;$i<10;$i++) {
     $idElemento = "pippo$i";
     if ($primoElemento == "") {
      $primoElemento = $idElemento;
     } // if ($primoElemento == "")?>
     <input type="text" name="<? print $idElemento ?>" id="<? print $idElemento ?>">
    <?
    } // for($i=0;$i<10;$i++)?>
    </body>
    </html><?
    //---- recupero il contenuto della bufferizzazione
    $contenutoPaginaHTML = ob_get_contents();
    //---- da qui finisce la bufferizzazione del html
    ob_end_clean();
    //---- rimpiazzo il XXXXXXX con l'id del primo elemento
    $contenutoPaginaHTML = str_replace('XXXXXXX',$primoElemento,$contenutoPaginaHTML);
    //---- stampo a video il contenuto della pagina html
    print $contenutoPaginaHTML;
    ?>

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.