Ich habe eine Seite mit mehreren Formularen und eine Änderung Listener auf jeweils ein paar Optionsfelder, um das Formular bei Änderung zu übermitteln. Außer, es ist das falsche Formular. Ich ging durch den Quellcode auf der Seite und fand keine unübertroffenen Tags (vielleicht weiß jemand einen guten HTML-Link nur für den Fall?).Während der Änderung Ereignis-Optionsfeld wirkt sich auf falsches Formular
Das sind die wichtigsten JS ist ich habe:
var AcceptanceBtns = this.AcceptanceBtns = function (accBtnForm) {
this.acceptanceBtnForm = accBtnForm;
this.labels = this.acceptanceBtnForm.find("label.approval-buttons");
this.radios = this.labels.find("input.radio-btn");
this.checkedRadio = this.radios.filter(':checked');
this.styleCheckedBtn();
}
AcceptanceBtns.prototype.confirmBtns = function() {
var that = this;
this.styleAcceptBtn()
this.radios.on("change", function() {
console.log("going");
var radio = $(this);
var label = radio.parent();
that.styleBtnsOnChange(label)
that.radios.off();
that.acceptanceBtnForm.submit();
});
};
AcceptanceBtns.prototype.startListening = function() {
if (this.acceptanceBtnForm.length === 0) { return; }
this.confirmBtns();
this.submitResponse();
};
var AcceptAffiliateBtns = this.AcceptAffiliateBtns = function (formEl) {
AB.call(this, formEl);
};
AcceptAffiliateBtns.prototype = Object.create(AB.prototype);
AcceptAffiliateBtns.prototype.constructor = AcceptAffiliateBtns;
$(document).on("page:change", function() {
if (typeof aab === 'undefined') {
var aab = {};
} else {
$.each(aab, function (key, val) { val.stopListening(); });
}
$('form.accepting-affiliates').each(function (i, el) {
aab[i.toString()] = new AcceptAffiliateBtns ($(el));
aab[i.toString()].startListening();
});
});
Beim Debuggen ich in der Konsole und that
im on change
Ereignis der ersten Form bezieht, geprüft obwohl this
außerhalb des auf Änderung Umfang korrekt ist (und es gibt einige js Styling wie Sie sehen können und es funktioniert gut für alle Tasten). Entweder ändert das Radio btn die erste Form oder die Variablen werden zwischen Instanzen verwechselt.
Ich sehe nur Sie 'that' in' confirmBtns' und ich sehe nicht, wie 'confirmBtns' bezieht sich auf das' change' Ereignis. –
'confirmBtns' wird in' startListening' aufgerufen, das ich nicht eingeschlossen habe, um Unordnung zu vermeiden und weil alles ok heißt. – MCB
Wie 'confirmBtns' aufgerufen wird, bestimmt den Wert von' this', das ist ziemlich wichtig. –