Visualizzazione dei risultati da 1 a 5 su 5

Discussione: focus

  1. #1

    focus

    E' possibile impostare il focus tramite "getElementById" ?
    Situazione:
    form con N campi che si chiamano Campo1, Campo2, ...
    N è variabile
    ho messo una funzione di controllo del campoX
    onChange="Validazione(i)" dove i è l'indice del campo

    nella funzione controllo e se non "passa l'esame"
    setto il campo come vuoto e poi ho l'istruzione
    codice:
    x='Campo' + i
    document.getElementById(x).focus()
    ma non funziona
    perchè?
    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Dare il focus tramite JS non sempre fa scattare l'evento associato all'oggetto.

    Il codice che hai postato dovrebbe funzionare, se CampoI e` un oggetto che puo` ricevere il focus, ma se vuoi anche far partire un controllo, che normalmente fai con l'evento onfocus, devi chiamare la funzione esplicitamente:

    x='Campo' + i;
    document.getElementById(x).focus();
    funzioneonfocus(i);

    L'ordine puo` essere questo, oppure invertito, a seconda della logica,
    oppure:
    if(funzioneonfocus(i) ) document.getElementById(x).focus();
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    mmm... ma come?!?
    forse non mi sono spiegato bene
    allora...
    quando l'utente modifica il campoX ho questo:
    codice:
    <input type="text" name="Campo<%=i%>" id="Campo<%=i%>" onChange="Salva(<%=i%>)">
    la funzione di controllo quindi viene eseguita all'uscita dal campo

    e questa è la funzione:

    codice:
    function Salva(id) {
     	x='Campo' + id
    	y=(document.getElementById(x).value)
    	if (...)
    	 {
    		window.open(...); 
    	 }
    	else
    	 {
    	 	alert('.....');
    	 	document.getElementById(x).value='';
    	 	document.getElementById(x).focus();
    	 }
    }
    ma il fatto è che
    codice:
    document.getElementById(x).focus();
    non mi attiva il focus sul controllo
    e pensavo fosse perchè non si può farlo passando da getElementById

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    La tua diagnosi non e` corretta.
    Si puo` individuare un campo tramite il getElementById().

    L'unico caso e` se il nome e` ripetuto: gli id in una pagina non possono essere ripetuti (a differenza dei name).


    Pero` nel tuo script c'e` l'uso scorretto di una variabile: id non e` un nome valido: e` usato dal DOM.
    Inoltre la variabile x potrebbe essere usata altrove: e` meglio usare variabili locali.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    ok, grazie, cambio nomi di variabili e riprovo!

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.