Visualizzazione dei risultati da 1 a 4 su 4

Discussione: onfocus e onblur

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    28

    onfocus e onblur

    Salve, ho una domanda che sicuramente per molti di voi risulterà banale e quindi spero possiate aiutarmi a capire.
    Ho visto che molti aggiungono alla proprietà value="Search" questi codici:
    onfocus="if (this.value == 'Search') this.value = '';" onblur="if (this.value == '') this.value = 'Search';"
    oppure
    onfocus="if (this.value == 'Search') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Search';}"
    Mi sembra di aver capito che hanno la funzione che ha nell'html l'attributo placeholder giusto?
    Quale dei due modi è quello giusto? Per quale motivo esistono più modi javascript per fare la stessa cosa?
    Spero possiate aiutarmi grazie.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Ciao
    Mi sembra di aver capito che hanno la funzione che ha nell'html l'attributo placeholder giusto?
    Giusto.
    Quale dei due modi è quello giusto?
    Domanda ambigua.
    Se ti riferisci alla differenza tra l'uso dell'attributo placeholder (che è HTML) e l'uso di JavaScript, non c'è un modo giusto o uno più giusto dell'altro. In genere qualsiasi scelta è effettuata secondo ciò che è disponibile e secondo propri criteri o magari secondo una preventiva analisi delle specifiche del caso.
    Tieni conto che l'attributo placeholder è una nuova caratteristica di HTML 5.
    Immagino quindi ci possano essere due principali motivi sul fatto che venga utilizzato un sistema JavaScript piuttosto che il "nuovo" attributo HTML:
    1 - si tratta di un documento datato realizzato quando ancora non esisteva l'attributo placeholder, quindi veniva utilizzato il sistema JavaScript;
    2 - si tratta di un documento recente ma lo sviluppatore ha deciso di mantenere comunque la retrocompatibilità per garantire una funzionalità analoga anche su browser datati nei quali non è supportato l'attributo placeholder;

    Un sistema più performante forse potrebbe prevedere l'uso di entrambi i metodi, cioè se placeholder non fosse supportato allora entrerebbe in gioco JavaScript.

    Per quale motivo esistono più modi javascript per fare la stessa cosa?
    Domanda ancora ambigua.
    Ripeto, placeholder è un attributo HTML non ha nulla a che fare con JavaScript, tant'è che funzionerà anche se sul proprio browser non viene abilitato JavaScript;
    Se invece ti stai riferendo alle due diverse sintassi degli script che hai postato, dove sulla prima sintassi non vengono utilizzate le parentesi graffe, queste sono comunque equivalenti. La prima è una forma abbreviata. In Javascript è infatti possibile definire un blocco di istruzioni (statement) senza racchiuderlo tra parentesi graffe quando questo contiene un'unica riga (cioè una sola istruzione). In generale questo è utilizzato su brevi blocchi condizionali come nel caso che hai indicato.

    Per cui le due sintassi si equivalgono:
    if (condizione) {istruzioni;}

    if (condizione) istruzioni;
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    28
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ciao

    Giusto.

    Domanda ambigua.
    Se ti riferisci alla differenza tra l'uso dell'attributo placeholder (che è HTML) e l'uso di JavaScript, non c'è un modo giusto o uno più giusto dell'altro. In genere qualsiasi scelta è effettuata secondo ciò che è disponibile e secondo propri criteri o magari secondo una preventiva analisi delle specifiche del caso.
    Tieni conto che l'attributo placeholder è una nuova caratteristica di HTML 5.
    Immagino quindi ci possano essere due principali motivi sul fatto che venga utilizzato un sistema JavaScript piuttosto che il "nuovo" attributo HTML:
    1 - si tratta di un documento datato realizzato quando ancora non esisteva l'attributo placeholder, quindi veniva utilizzato il sistema JavaScript;
    2 - si tratta di un documento recente ma lo sviluppatore ha deciso di mantenere comunque la retrocompatibilità per garantire una funzionalità analoga anche su browser datati nei quali non è supportato l'attributo placeholder;

    Un sistema più performante forse potrebbe prevedere l'uso di entrambi i metodi, cioè se placeholder non fosse supportato allora entrerebbe in gioco JavaScript.


    Domanda ancora ambigua.
    Ripeto, placeholder è un attributo HTML non ha nulla a che fare con JavaScript, tant'è che funzionerà anche se sul proprio browser non viene abilitato JavaScript;
    Se invece ti stai riferendo alle due diverse sintassi degli script che hai postato, dove sulla prima sintassi non vengono utilizzate le parentesi graffe, queste sono comunque equivalenti. La prima è una forma abbreviata. In Javascript è infatti possibile definire un blocco di istruzioni (statement) senza racchiuderlo tra parentesi graffe quando questo contiene un'unica riga (cioè una sola istruzione). In generale questo è utilizzato su brevi blocchi condizionali come nel caso che hai indicato.

    Per cui le due sintassi si equivalgono:
    if (condizione) {istruzioni;}

    if (condizione) istruzioni;
    Ciao, mi riferivo solamente alle sintassi di JavaScript ma comunque tutto questo manuale mi è stato di grande aiuto. Devo però rivolgerti se non ti dispiace un'altra domanda alla quale sono sicuro saprai dare risposta. Mi hai accennato che è possibile unire placeholder alla sintassi JavaScript e far entrare in funzione una delle due quando il browser lo consente. Ma come faccio? Spero possa aiutarmi grazie.

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Mi hai accennato che è possibile unire placeholder alla sintassi JavaScript e far entrare in funzione una delle due quando il browser lo consente. Ma come faccio?
    L'attributo placeholder puoi comunque utilizzarlo, indicandolo quindi sul codice HTML, anche se il browser (datato) non lo supporta. Male che vada, tale funzionalità non risulterà attiva su quel browser. A quel punto fai un semplice test in JavaScript per determinare il caso in cui tale proprietà non è disponibile su un elemento input (che magari crei al volo via script solo per il test); in tal caso vai ad "attivare" l'altro sistema JavaScript.

    Senza stare a reinventare la ruota, ti invito a fare qualche semplice ricerca sul web dove sicuramente troverai ulteriori informazioni utili e script già pronti da copiaincollare.
    Una ricerca potrebbe essere questa: check if placeholder is supported

    Se comunque hai ancora difficoltà, chiedi pure.
    Buon proseguimento.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    28
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    L'attributo placeholder puoi comunque utilizzarlo, indicandolo quindi sul codice HTML, anche se il browser (datato) non lo supporta. Male che vada, tale funzionalità non risulterà attiva su quel browser. A quel punto fai un semplice test in JavaScript per determinare il caso in cui tale proprietà non è disponibile su un elemento input (che magari crei al volo via script solo per il test); in tal caso vai ad "attivare" l'altro sistema JavaScript.

    Senza stare a reinventare la ruota, ti invito a fare qualche semplice ricerca sul web dove sicuramente troverai ulteriori informazioni utili e script già pronti da copiaincollare.
    Una ricerca potrebbe essere questa: check if placeholder is supported

    Se comunque hai ancora difficoltà, chiedi pure.
    Buon proseguimento.
    Grazie ho risolto.

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.