2013-10-30 2 views
17

Ich habe diese einfache Funktion Platzhalter in Browser hinzufügen, dass es nicht unterstützen:Wie Platzhalter entfernen focus

DEMO

Die Frage ist: Wie kann ich auf diese Funktion hinzufügen, die Möglichkeit, die entfernen Platzhalter, wenn der Benutzer hineinklickt?

+0

Warum Sie Platzhalter für diese verwenden Sie Unschärfe auch Platzhalter ist die eingebaute Attribute Browser dh nicht unterstützt diese remeber verwenden können! –

Antwort

40

Try removeAttr() wie zu verwenden,

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

Demo

Um die placeholder value wieder auf blur() versuchen dies, zu erhalten

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

Demo 1

+0

Danke Rohan. Es funktioniert ordnungsgemäß in Chrome. Altough funktioniert nicht im Explorer (v. 8), da benötige ich meistens diese Funktion. Weißt du wie ich tun kann, damit dieser Code auch auf Explorer 8 funktioniert? Vielen Dank! – johnnyfittizio

+1

Wenn Sie brauchen, ich habe eine neue JSBin erstellen: http://jsbin.com/avIfuDAf/1 – johnnyfittizio

+1

@johnnyfittizio dies ist, weil 'Platzhalter' nicht funktioniert in' IE 8', für diesen müssen Sie 'Wert' von Ihrem 'elements' on' focus and blur' Siehe Demo http://jsbin.com/avIfuDAf/3 –

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

Versuchen Diese Hoffnung es

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

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

}); 
0

Für Browser hilft, dass Sie diese nicht Platzhalter unterstützen können verwendet werden: https://github.com/mathiasbynens/jquery-placeholder. Fügen Sie das Platzhalterattribut normal wie für HTML5 hinzu, und rufen Sie dann dieses Plugin auf: $('[placeholder]').placeholder();. Dann benutze Rohan Kumars Code und wird Cross-Browser sein.

13

CSS für mich gearbeitet:

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

Beste Lösung für moderne Browser. – JohnA10

+0

Jede Lösung für FireFox – nilesh

+1

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

17

Es besteht keine Notwendigkeit JavaScript-Funktion zu verwenden, um dies zu erreichen, eine einfachere Lösung ist:

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

Nice one! es funktioniert perfekt – ackuser

+0

Danke dafür – 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

Eine sehr einfache und umfassende Lösung für Dies funktioniert in Mozila, IE, Chrome, Opera und Safari:

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

Dies ist meine Lösung auf Klick nicht auf Fokus:

$(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); 
    } 
});