Wie oder ist es überhaupt möglich, den Wert this
von einer Funktion abzurufen? Ich habe dieses Snippet erstellt, das defaultValue
für die Funktion speichert, aber ich möchte dies von außerhalb der Funktion direkt auf dem dom
-Element lesen. Ist das möglich??
Ich habe dies in jQuery gemacht:
$("input").val(function() {
var $label = $("label[for='" + $(this).attr("id") + "']");
this.defaultValue = $label.text();
$label.hide()
return this.defaultValue
}).click(function() {
if ($(this).val() == this.defaultValue) {
$(this).val("");
}
}).bind("blur", function() {
if ($(this).val() == "") {
$(this).val(this.defaultValue);
}
});
Sehen Sie es hier in Aktion: http://jsfiddle.net/ZUZ3L/g6dMA/
4 Antworten
Sie können es mit der Funktion jQuery .data () in dem im DOM dargestellten Element speichern:
Tun Sie dies auf Seite Laden:
$(this).data('defaultValue', $(this).val());
Sie können es später abrufen mit:
alert($('#myElement').data('defaultValue');
..., der den bei pageload eingestellten Wert anstelle des aktuellen Werts der Eingabe zurückgibt.
In Ihrer Funktion $("input").val(function() {
bezieht sich this
auf ein Element aus der Abfrage $("input")
.
Beachten Sie, dass $("input")
eine Liste von Elementen zurückgibt, auch wenn nur eines vorhanden ist. Verwenden Sie .get()
, um ein Element auszuwählen.
Sie können über $("input").get(0).defaultValue
auf defaultValue
zugreifen. (vorausgesetzt, Sie möchten nur ein Element)
Diese Funktionen sind Rückruffunktionen. Dies bedeutet, dass sie ausgeführt werden, wenn das Ereignis ausgelöst wird (von jQuery). In diesem Zusammenhang muss also this
von jQuery entschieden werden. In diesem Fall ist das Element das Element, an das das Ereignis gebunden ist.
Nebenbei bemerkt sieht es so aus, als würden Sie nach dem Platzhalterattribut suchen (nur in HTML5 verfügbar, aber Sie können Plugins für ältere Browser finden).
Versuche dies:
<input onfocus="if (this.value==this.defaultValue) this.value = '';" onblur="if (this.value=='') this.value = this.defaultValue;" name="search" value="Search">