Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    23

    problema con onblur su text form

    Salve a tutti, spero possiate aiutarmi.
    volevo creare un text form in cui digitando un carattere visualizzava una tabella originariamente nascosta mentre cancellando i caratteri dal form la tabella tornava ad essere invisibile.
    Ora io questo l'ho fatto inserendo nell'input text l'evento onkeyup che rimanda ad una funzione javascript tale per cui
    codice:
    if (document.search.query.value==="") { document.getElementById("content_tab").style.visibility="hidden"; } else { document.getElementById("content_tab").style.visibility="visible"; }
    Allo stesso modo però vorrei che a qualsiasi click effettuato al di fuori del form (barra di navigazione compresa) la tabella torni ad essere nascosta (esattamente come accade con goggle per intenderci) e questo sono riuscito a realizzarlo con l'evento onblur che richiama la funzione in cui il div in questione torna ad essere invisibile.
    Il problema, applicando in tal modo l'evento onblur è che in questo modo non posso operare dentro la tabella: cioè dat che le singole voci della tabella contengono dei link, impostando l'evento onblur nel momento in cui provo a cliccare fuori dall'imput text e quindi sulla tabella che in quel momento è visibile, questa torna ovviamente invisibile esattamente come avviene se cliccassii in qualunque altra parte della pagina..
    Qualcuno può aiutarmi? grazie mille per l'attenzione

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Se ho capito cosa vuoi/devi fare forse risolvi con jquery eventi mouseenter/mouseleave
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    23
    ciao grazie della risposta , per farti capire meglio:
    nel momento in cui digito qualcosa sul form, si visualizza sotto di essa una tabella con una serie di link.
    Io vorrei poter cliccare sui singoli link quando la tabella è visibile. Invece usando l'evento onblur associato all'input text, nel momento in cui la tabella è visibile perchè sto digitando qualcosa e voglio cliccare sul link della tabella, questa scompare (avendo associato all'evento onblur la funzione per cui la tabella diventa invisibile).
    Spero di essere stato chiaro! Grazie mille

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ok, prova quanto consigliato
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da calcas2
    ciao grazie della risposta , per farti capire meglio:
    nel momento in cui digito qualcosa sul form, si visualizza sotto di essa una tabella con una serie di link.
    Io vorrei poter cliccare sui singoli link quando la tabella è visibile. Invece usando l'evento onblur associato all'input text, nel momento in cui la tabella è visibile perchè sto digitando qualcosa e voglio cliccare sul link della tabella, questa scompare (avendo associato all'evento onblur la funzione per cui la tabella diventa invisibile).
    Spero di essere stato chiaro! Grazie mille
    È semplicissimo. Devi fare un controllo sul value dell'input text anche a ogni onblur. Se e solo se il campo è vuoto fai sparire la tabella. Se quella che hai postato è l'unica riga di codice che usi per l'onkeyup vedrai che andrà bene anche per l'onblur e non avrai bisogno neanche di nuovo codice… basterà che richiami all'onblur la stessa funzione che usi già per l'onkeyup.

    @cavicchiandrea
    È vero che io sono un po' prevenuto su jQuery et similia… però proporre di installare jQuery per una cosa del genere mi sembra davvero controproducente. Dovrebbe imparare una nuova sintassi, studiarsi gli eventi, appesantire la pagina, etc. etc.
    Io sono dell'avviso che nel forum si dovrebbe consigliare jQuery solo nei seguenti casi:[list=1][*]L'utente lo sta già usando,[*]L'utente lo richiede esplicitamente,[*]La difficoltà ad affrontare la questione in puro js è di gran lunga maggiore che facendo uso di jQuery e l'utente è disposto ad usare jQuery.[/list=1]
    …ma ovviamente è la mia personalissima opinione…

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    23
    Originariamente inviato da carlomarx
    È semplicissimo. Devi fare un controllo sul value dell'input text anche a ogni onblur. Se e solo se il campo è vuoto fai sparire la tabella. Se quella che hai postato è l'unica riga di codice che usi per l'onkeyup vedrai che andrà bene anche per l'onblur e non avrai bisogno neanche di nuovo codice… basterà che richiami all'onblur la stessa funzione che usi già per l'onkeyup.

    @cavicchiandrea
    È vero che io sono un po' prevenuto su jQuery et similia… però proporre di installare jQuery per una cosa del genere mi sembra davvero controproducente. Dovrebbe imparare una nuova sintassi, studiarsi gli eventi, appesantire la pagina, etc. etc.
    Io sono dell'avviso che nel forum si dovrebbe consigliare jQuery solo nei seguenti casi:[list=1][*]L'utente lo sta già usando,[*]L'utente lo richiede esplicitamente,[*]La difficoltà ad affrontare la questione in puro js è di gran lunga maggiore che facendo uso di jQuery e l'utente è disposto ad usare jQuery.[/list=1]
    …ma ovviamente è la mia personalissima opinione…
    Grazie carlomarx ma forse non mi sono spiegato bene: io non voglio che la tabella scompaia solo se il campo è vuoto perchè del rest a questo ci pensa già l'evento onkeyup. Prendiamo come esempio i suggerimenti che la pagina iniziale di google fornisce: questi, se uno clicca sulle voci di menu o sullo sfondo bianco della pagina internet, scompaiono a prescindere dal fatto che nel campo di ricerca io abbia scritto qualcosa e anzi anche e soprttutto in questo caso (e in questo servirebbe nel mio caso l'evento onblur penso). Tuttavia limitandomi ad impostare l'evento onblur come appena detto, non riuscirei a cliccare sulle singole voci della mia tabella perchè ad ogni click scomparirebbe la stessa. Allo stesso modo, se impostasssi la medesima funzione dell'evento onkeyup anche all'evento onblur come da te indicato, io renderei praticamente sempre visibile la tabella anche nel caso in cui volessi cliccare su altre parti della pagina (anche nel caso in cui nel campo di testo abia scritto qualche parola). E io questo non lo voglio. voglio solo che quanto il div della tabella risulta visibile perchè sto digitando qualcosa, io possa cliccare su una delle voci della tabella. Allo stesso modo però, se clicco sulle singole voci di menu che richiamano ad altri div nascosti o anche semplicemente se cliscco sullo sfondo bianco della pagina voglio mantenere l'evento onlur e nascondere la tabella anche se ho digitato qualcosa nel campo di testo.

  7. #7
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Allora non ti conviene usare l'onblur. Dovresti usare l'onclick sul document che controlli ricorsivamente che tra i target dell'evento ci sia la tabella. Spero di essermi spiegato…

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    23
    Non ho capito bene...
    In parole povere, è come se io avessi bisogno dell'evento onblur riferito al "div" della tabella e non all'input text. Lo so che non si può associare l'evento onblur al div ma sostanzialmente è quello di cui avrei bisogno

  9. #9
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Te l'ho detto, devi associare l'evento onclick al document.
    Facciamo finta che a tale evento sia associata la funzione pippo(): a ogni esecuzione, pippo() farà qualcosa del genere:
    [list=1][*]Controlla se l'event.target o uno tra TUTTI i suoi nodi genitori, nonni, bisnonni, etc. è la tua tabella (event.target è un nodo: dovrai lanciare un ciclo con event.target.parentNode). Se la tua tabella È tra i target lancerai un return;[*]Se la tua tabella NON È tra i target la renderai "visibility: hidden;"[/list=1]
    Chiaro adesso?

  10. #10
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Ti faccio un esempio in codice, così è più chiaro…

    codice:
    function docClick (oEvent) {
    	var bHide = true, oTable = document.getElementById("content_tab");
    	for (var oItTarget = oEvent.target; oItTarget; oItTarget = oItTarget.parentNode) {
    		if (oItTarget === oTable) { bHide = false; break; }
    	}
    	if (bHide) {
    		oTable.style.visibility = "hidden";
    	}
    }
    
    document.onclick = docClick;

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.