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/

0
curly_brackets 9 Okt. 2012 im 11:43

4 Antworten

Beste Antwort

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.

2
Faust 9 Okt. 2012 im 07:52

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)

0
MiniGod 9 Okt. 2012 im 07:51

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).

0
Lian 9 Okt. 2012 im 07:49

Versuche dies:

<input onfocus="if (this.value==this.defaultValue) this.value = '';" onblur="if (this.value=='') this.value = this.defaultValue;" name="search" value="Search">
0
Yekver 9 Okt. 2012 im 07:47