Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218

    [jQuery] Input, sostituzione e Blur: non funziona

    Ciao a tutti.

    Volevo implementare una cosa del genere: alla visualizzazione della pagina appaiono nel div login due input text: email e password, con testo visibile (La tua email, La tua password). Fin qui tutto ok.

    All'evento blur di ogni campo era mia intenzione, qualora il testo fosse nullo, far tornare la stringa di default. Per l'username nessun problema. Funziona con questo codice:
    Codice PHP:
        $('#input-email').click(function() {
            if ($(
    this).val() == 'La tua email')
            {
                $(
    this).val('');
            }
        });
        
        $(
    '#input-email').blur(function(){
            if ($(
    this).val() == '' )
            {
                $(
    this).val('La tua email');
            }    
        }); 
    Per la password l'ho pensata in questo modo, essendo prima type="text" e poi type="password".

    Codice PHP:
        $('#input-password').click(function() {
            if ($(
    this).val() == 'La tua password')
            {
                $(
    this).replaceWith('<input type="password" id="input-password" class="myinputstyle" value="" />');
            }
        });
        
        $(
    '#input-password').blur(function(){
            if ($(
    this).val() == '')
            {
                $(
    this).replaceWith('<input type="text" id="input-password" class="myinputstyle" value="La tua password"/>');
            }    
        }); 
    Il tutto è scritto in $(document).ready(function().

    Il problema è che una volta che input-password viene rimpiazzato, l'evento blur non si attiva. Come mai? C'è un modo migliore per gestire questa cosa?

  2. #2
    Non capisco perchè cambi proprio tutto l'input della password. Comunque il problema è che gli eventi tipo click e blur come li hai lanciati tu valgono solo per gli elementi presenti nel dom. Se vuoi fare in modo che valgano anche per gli elementi che aggiungi tu (come nel tuo caso) devi usare live().

    codice:
    $('#input-password').live('click', function() { 
            if ($(this).val() == 'La tua password') 
            { 
                $(this).replaceWith('<input type="password" id="input-password" class="myinputstyle" value="" />'); 
            } 
        }); 
         
        $('#input-password').live('blur', function(){ 
            if ($(this).val() == '') 
            { 
                $(this).replaceWith('<input type="text" id="input-password" class="myinputstyle" value="La tua password"/>'); 
            }     
        });

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218
    Ti ringrazio per la soluzione; l'attributo type può essere cambiato in maniera differente?

  4. #4
    Non ho mai provato ma dovrebbe essere:

    codice:
    $(this).attr("type", "text");

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 © 2026 vBulletin Solutions, Inc. All rights reserved.