Frage

Ich versuche, das Ist-Wert-Attribut eines Eingangs zurücksetzen, damit kann es auf diesen Wert zurückgesetzt wird zurück-Reset, die nicht unbedingt der ursprünglichen Wert, wenn das Formular geladen wurde. Das Problem ist, diese Veränderungen scheinen nicht wirksam werden. Ich habe beide versucht:

$(this).attr('value', $(this).val());

sowie ....

$(this).val($(this).val());

Keine von diesen ändern tatsächlich das value="" Attribut des Eingangs, das ist, was verwendet wird, wenn ein Formular zurückgesetzt wird. Das Problem ist, dass, wenn jemand ein Formular (über AJAX) speichert, bearbeitet dann wieder und drückt Reset (w / out diese Zeitersparnis), wird es auf die ursprünglichen Werte zurück die Seite geladen mit, die Werte nicht zuletzt gespeicherten mit, das ist, was ich versuche zu bekommen. Ich weiß, es gibt Möglichkeiten, um diesen (Speicher in lokalen Variablen oder etwas), aber eine jQuery Lösung wäre viel besser. Irgendwelche Ideen ??

War es hilfreich?

Lösung

, wenn Sie so etwas wie dies tun:

$(this).val($(this).val());

es wirklich heißt übersetzt:

var temp = $(this).val());
$(this).val(temp);

Also im Grunde, es ist nur den gleichen Wert setzen zurück in.

Was wollen Sie zu tun ist auf dem Dokument Last oder der AJAX-Request, speichern den Wert in einer Variablen und dann abzurufen, wenn das Formular zurückgesetzt wird.

Andere Tipps

Das klingt wie ein cooler Trick, hier ist eine andere.

Sie können den DOM ändern, indem Sie das gesamte Element zu ersetzen, so statt:

$('#my_input').val("new_value_here");

Sie verwenden können:

$('#my_input').replaceWith(' < input type="text" value="new_value_here" />');

Ich habe mit einer Lösung für diese kommen ...

Wenn Sie ein Formular speichern (über AJAX, auf dem Erfolg Rückruf):

// Set 'savedValue' attr on elements (for when reset, will reset to last saved values)
$('#myForm input').each(function() {
    $(this).attr('savedValue', $(this).val());
});

Wenn benötigen Sie das Formular zurück:

// Reset form
if($('#myForm input:first').attr('savedValue')!=undefined) {
    // Have saved values, reset to last saved values
    $('#myForm input').each(function() {
        $(this).val($(this).attr('savedValue'));
    });
}
else {
    // No saved values, reset form
    $('#myForm')[0].reset();    
}

Dies funktioniert gut für Textfelder, und mit ein wenig Feintuning könnten Sie bekommen es mit jedem Eingabetyp zu arbeiten. Ich habe viele Eingänge bekam so wollte ich manuell vermeiden Speicherung / sie, wenn überhaupt möglich zurückzusetzen. Dies wäre ein gutes Plugin sein ... vielleicht morgen

Verwenden Sie einfach thing.value="foo"; überprüfen Sie, ob es funktioniert, wenn, was ein jQuery-Objekt als auch nur ein ganz normales DOM-Objekt ist. attr('value', $(this).val()) verwendet, wird nicht funktionieren, wie Sie es möchten

Noch besser als eine lokale Variable, können Sie die jQuery Daten Methoden verwenden, um die Reset-Werte speichern zusammen mit dem Elemente zurückgesetzt werden.

Beim Speichern:

$(this).data("ResetValue", $(this).val());

Ein Reset:

$(this).val($(this).data("ResetValue"));

Ändern der Wähler in geeigneter Weise und wahrscheinlich Hinzufügen der undefinierten Prüfung als Ryan erwähnt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top