2010-09-27 8 views
9

Ich habe ein Eingabefeld, dem der Standardwert Text zugewiesen ist. Wie kann ich diesen Text entfernen, wenn der Benutzer auf dem Feld konzentriert ::So entfernen Sie den Standardwert für die Eingabe im Fokus

CoDE

<input type="text" name="kp1_description" value="Enter Keypress Description"> 
+0

Dies ist keine Antwort, aber in Zukunft wird es http://dev.w3.org/html5/spec/Overview.html#the-placeholder-attribute – Galen

+0

mögliche Duplikate von [Lösche den Standardwert eines Eingabetextes Klicken Sie auf] (http://stackoverflow.com/questions/2984311/delete-default-value-of-an-input-text-on-click) – ripper234

Antwort

15
$(document).ready(function(){ 
    var Input = $('input[name=kp1_description]'); 
    var default_value = Input.val(); 

    Input.focus(function() { 
     if(Input.val() == default_value) Input.val(""); 
    }).blur(function(){ 
     if(Input.val().length == 0) Input.val(default_value); 
    }); 
})​ 

Das sollte es tun.

aktualisiert, vergessen diesen Fokus nicht für den Fokus-out-Ereignis keinen zweiten Parameter haben, weil es keine gibt, hat es mit Unschärfe gekettet werden:

http://jsfiddle.net/hDCsZ/

Sie auch über das Erstellen Ihrer denken sollten eigene Funktion für dieses wie:

$.fn.ToggleInputValue = function(){ 
    return $(this).each(function(){ 
     var Input = $(this); 
     var default_value = Input.val(); 

     Input.focus(function() { 
      if(Input.val() == default_value) Input.val(""); 
     }).blur(function(){ 
      if(Input.val().length == 0) Input.val(default_value); 
     }); 
    }); 
} 

verwenden Sie dann wie so

$(document).ready(function(){ 
    $('input').ToggleInputValue(); 
})​ 
+0

Der Wert nicht wieder, wenn nichts eingegeben wurde. Hmm .. – user342391

+0

Aktualisiert, lassen Sie mich wissen, ob das funktioniert. – RobertPitt

+0

komisch immernoch nichts – user342391

7

Sie es auf diese Weise nicht tun. Verwenden Sie ein jQuery-Wasserzeichenskript: http://code.google.com/p/jquery-watermark/

$("input[name='kp1_description']").watermark("Enter Keypress Description");

Es gibt eine Menge Dinge, die Sie berücksichtigen müssen, wenn Sie es manuell tun. Was passiert zum Beispiel, wenn das Textfeld den Fokus verliert? Wenn es keinen Wert gibt, möchten Sie Ihren Hilfstext lesen. Wenn dies der Fall ist, sollten Sie diese Änderungen berücksichtigen.

einfach leichter, andere Menschen zu tun zu lassen, die schwere Heben :)

+0

aber eine ganze Bibliothek für eine einfache Aufgabe verwenden ist nicht die beste Idee. – RobertPitt

+2

Stimmt, ich bin nur der Meinung, dass dieses Rad nicht neu erfunden werden muss. Es gibt viele Szenarien, die Sie beachten müssen, und die Verwendung der Bibliothek kann das sehr vereinfachen. Er markierte seine Frage mit jQuery, also ist die Verwendung eines jQuery-Plugins wahrscheinlich der pragmatischste Weg, um diese Aufgabe zu erfüllen. – clifgriffin

+0

+1 für die Wiederverwendung von Code. Einige Probleme sind schwer und sollten von einer Bibliothek gelöst und nicht von jedem Code-Affen auf dem Planeten schlecht umgesetzt werden. Die Leute sind besonders schlecht, wenn es um Javascript geht. – Sorpigal

6

Mit HTML5 können Sie es ohne Javascript machen: Verwenden Sie einfach placeholder statt value. Ich denke, es ist eine nette Ergänzung, aber natürlich müssen Sie zuerst die Browser-Kompatibilität prüfen.

0

HTML:

<form method="post"> 
    <input type="text" id="customer" value="Username"/>  
    <input type="Submit" value="Login" class="rc" /> 
</form> 

Javascript-Code:

<script> 
$('#customer').on({ 
    focus:function(){     
     if(this.value == 'Username') this.value = ''; 
    }, 
    blur:function(){ 
     if(this.value == '') this.value = 'Username'; 
    } 
}) 
</script> 

Das ist alles, ich hoffe, es hilft.

1

var defaultForInput = "abc";

<input id="myTextInput" type="text" placeholder=defaultForInput />


Wenn Ihr Formular einreichen, prüfen Sie, ob die Eingabe (id = "myTextInput") Wert ist der 'leer-String', wenn so ersetze sie (defaultForInput) .

3
$('input, textarea').each(function() { 
    var Input = $(this); 
    var default_value = Input.val(); 

    Input.focus(function() { 
     if(Input.val() == default_value) Input.val(""); 
    }).blur(function(){ 
     if(Input.val().length == 0) Input.val(default_value); 
    }); 
}); 
1

Der Super Duper Short Version

$('#input_id').focus(function() { 
    $(this).val(""); 
}); 
3
<input type="text" id="anything" placeholder="enter keypress description"> 

Ich denke, das

0

Plain JavaScript helfen:

(function() { 
    let input = document.querySelector ("input[name='kp1_description']"); 
    input.onfocus = function() { 
    this.placeholder = this.value; 
    this.value = ''; 
    }; 
})(); 

Dieser Wert hält in den Platzhalter, anstatt ihn vollständig zu entfernen. Wenn Ihnen das nicht gefällt, entfernen Sie die Platzhalterzeile.