2013-10-30 14 views
17

Ho fatto questa semplice funzione per aggiungere segnaposto nei browser che non lo supportano:Come rimuovere segnaposto a fuoco

DEMO

La domanda è: come posso aggiungere a quella funzione la possibilità di rimuovere il segnaposto quando l'utente fa clic all'interno di esso?

+0

Perché stai usando segnaposto per questo è possibile utilizzare anche sfocatura segnaposto è gli attributi insiti del browser IE non supporta questa ricordate! –

risposta

40

tenta di utilizzare removeAttr() come,

$('input,textarea').focus(function(){ 
    $(this).removeAttr('placeholder'); 
}); 

Demo

Per ottenere placeholder value nuovo su blur() provare questo,

$('input,textarea').focus(function(){ 
    $(this).data('placeholder',$(this).attr('placeholder')) 
      .attr('placeholder',''); 
}).blur(function(){ 
    $(this).attr('placeholder',$(this).data('placeholder')); 
}); 

Demo 1

+0

Grazie, Rohan. Funziona correttamente in Chrome. Anche se non funziona in Explorer (v. 8), è dove per lo più ho bisogno di questa funzione. Sai come posso fare per far funzionare questo codice anche su Explorer 8? Grazie! – johnnyfittizio

+1

Se hai bisogno di creare un nuovo JSBin: http://jsbin.com/avIfuDAf/1 – johnnyfittizio

+1

@johnnyfittizio questo è dovuto al fatto che 'placeholder' non funziona in' IE 8', per questo devi impostare 'value' del tuo 'elements' su' focus e blur' Vedi demo http://jsbin.com/avIfuDAf/3 –

0
$('*').focus(function(){ 
    $(this).attr("placeholder",''); 
    }); 
0

Prova Questa speranza aiuta

$('input,textarea').focus(function() 
{ 
$(this).attr('placeholder',''); 

}); 
0
$('input').focus(function() 
{ 
    $(this).attr('placeholder',''); 

}); 
0

Per i browser che non supportano segnaposto è possibile utilizzare questo: https://github.com/mathiasbynens/jquery-placeholder. Aggiungi normalmente l'attributo segnaposto come per HTML5, quindi chiama questo plug-in: $('[placeholder]').placeholder();. Quindi usa il codice di Rohan Kumar e sarà cross-browser.

13

CSS ha funzionato per me:

input:focus::-webkit-input-placeholder { 
    color: transparent; 
} 
+1

La migliore soluzione per i browser moderni. – JohnA10

+0

Qualsiasi soluzione per FireFox – nilesh

+1

Nilesh: https://css-tricks.com/almanac/selectors/p/placeholder/ –

17

Non v'è alcuna necessità di utilizzare funzione javascript per raggiungere questo obiettivo, una soluzione più semplice è:

<input type="text" placeholder="enter your text" onfocus="this.placeholder=''" onblur="this.placeholder='enter your text'" /> 
+0

Bello! Funziona perfettamente – ackuser

+0

Grazie per questo – Ned

0
$("input[placeholder]").each(function() { 
    $(this).attr("data-placeholder", this.placeholder); 

    $(this).bind("focus", function() { 
     this.placeholder = ''; 
    }); 
    $(this).bind("blur", function() { 
     this.placeholder = $(this).attr("data-placeholder"); 
    }); 
}); 
0

Una soluzione molto semplice e completa per questo è ciò che funziona in Mozilla, IE, Chrome, Opera e Safari:

<input type="text" placeholder="your placeholder" onfocus="this.placeholder=''" onblur="this.placeholder='your placeholder'" /> 
0

Questa è la mia soluzione al clic non sul fuoco:

$(document).on('click','input',function(){ 
    var $this = $(this); 
    var place_val = $this.attr('placeholder'); 
    if(place_val != ''){ 
     $this.data('placeholder',place_val).removeAttr('placeholder'); 
    } 
}).on('blur','input',function(){ 
    var $this = $(this); 
    var place_val = $this.data('placeholder'); 
    if(place_val != ''){ 
     $this.attr('placeholder',place_val); 
    } 
}); 
Problemi correlati