Change-Ereignis nicht auslösen. auf Textfeld bei einer änderung der Daten durch anderen code
Brauche ich ein change-Ereignis aus, um Feuer auf ein element, ohne Bezug, wie der Wert des Elements geändert wurde.
Mein use-case ist hier, dass ich ändern müssen Elemente in einem Formular, wenn eine bestimmte textbox den Wert ändert. Das problem ist, dass das element ist bevölkert von einer anderen Taste (eine Kalender-Schaltfläche, über die der Benutzer wählen Sie ein Datum, die wird dann eingefügt in die 1. textbox).
Mit dem folgenden Beispiel muss ich wissen, wenn "Datum1" verpasst, also kann ich das update "Datum2". Ich nicht wissen, die ID des button-seine dynamisch generiert werden, durch ein anderes Werkzeug--so kann ich nicht befestigen alles.
Ich habe Folgendes HTML:
<input type="text" id="date1" value="" />
<input type="button" id="but1" value="click me" />
<br/>
<input type="text" id="date2" value="" />
Und dieses javascript:
$(function () {
$("#but1").click(function () {
$("#date1").val(new Date().toLocaleDateString());
});
$("#date1").change(function () {
var d = new Date($("#date1").val());
$("#date2").val(d.addDays(7));
});
});
Date.prototype.addDays = function (days) {
var current = this;
current.setDate(current.getDate() + days);
return current;
};
Hier ein jsfiddle ich war mit: http://jsfiddle.net/mYWJS/7/
Update: ich habe ein DIV-wrapper um die jsfiddle Beispiel in der Hoffnung, dass vielleicht inspirieren eine andere Lösung. Ich konnte nicht einen Weg finden, es zu nutzen, mich aber meine javascript-Fähigkeiten sind eher mittelmäßig.
In Bezug auf Fabricio Kommentar zu DOM-Mutationen, gibt es eine DOM-mutation-Lösung, die etwas vom browser unabhängig? Es gibt keine Möglichkeit für mich, um mit Sicherheit voraussagen die browser, die hier verwendet werden. Ich bin nicht allzu besorgt über IE6, aber die wenigen Lösungen, die ich gesehen habe für DOM Mutationen konzentrieren sich auf Chrome.
change
nur ausgelöst, für text-Eingaben, wenn die Eingabe den Fokus verliert, nachdem sein Wert verändert nach gewinnen zu konzentrieren. Kein Fokus = kein change-Ereignis aus. Sie können die trigger eine synthetische .change()
Ereignis, nachdem Sie es von Ihrem JS, aber wenn Sie wirklich brauchen, um zu sehen über einen Eingang s-Wert, Sie müssen eine DOM-Mutation-Observer, die meist einen hacken.
InformationsquelleAutor Sailing Judo | 2013-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Feuer die Veranstaltung
Aleternate:
EDIT: Angesichts Ihrer Klärung:
HINWEIS: Dieses Beispiel hat Ihnen in der gleichen Zelle der Tabelle. Wenn es in einem nachfolgenden Tabelle Zelle verwenden:
ALSO, zu klären, Sie nicht wissen, die id des
but1
input-Taste? und wenn das richtig ist, weißt du die id von der Schutzfolie/ - element enthalten?Seine in eine Zelle der Tabelle, die ich bestimmen kann. Ich weiß auch unmittelbar vorangestellt 'Datum1' textbox.
In Zukunft Fragen, helfen Sie uns, helfen Sie durch die vollständige Kontext-markup und wirklich klare Erklärung von Ihrer Herausforderung.
Du hast Recht, aber manchmal ist es schwer, vorauszusehen, was info ist wertvoll, um eine Antwort zu bekommen. Ich könnte wohl ein paar tausend Zeilen code, um klar zu definieren, die Frage, aber ich konzentrierte mich auf das, was ich fühlte, ich wirklich benötigt... ein Weg zu immer erkennen, wenn der Inhalt einer textbox geändert.
InformationsquelleAutor Mark Schultheiss