Ich möchte dem Benutzer die Möglichkeit geben, auf einen Startpunkt und dann auf einen Endpunkt zu klicken und verschiedene Formularelemente zwischen den beiden ausgewählten Punkten zu manipulieren.
Die Seite ist eine Tabelle mit zahlreichen Zeilen, und jede Zeile enthält die relevanten Informationen, um eine Antwort auf die Frage in dieser Zeile zu bearbeiten/zu speichern. Jede Zeile hat eine verborgene Eingabe für den Wert sowie Ja/Nein-Radiobuttons, hauptsächlich für unerfahrene Benutzer. In der TD-Zelle mit der Frage kann der Benutzer klicken oder zwischen Ja, Nein und Leer umschalten. Ich habe also die Optionsfelder auf der Seite belassen, um Ja/Nein anzuzeigen, und ein verborgenes Feld verwendet, um einen Wert von (1,0,-1) zu speichern.
Dies verwende ich, um die Antwort festzulegen, wenn die Fragezelle angeklickt wird.
$(".question").bind("click dblclick", function(e) {
var newClassName = "AnswerUnknown";
var hiddenAnswerId = $(this).attr('id').replace("question", "answer");
var answer = parseInt($("#" + hiddenAnswerId).val());
var newValue;
switch (answer) {
case -1:
newClassName = "AnswerCorrect";
newValue = 1;
$("#" + $(this).attr('id').replace("answer", "radioYes")).attr('checked', 'checked');
$("#" + $(this).attr('id').replace("answer", "radioNo")).attr('checked', '');
break;
case 1:
newClassName = "AnswerWrong";
newValue = 0;
$("#" + $(this).attr('id').replace("answer", "radioYes")).attr('checked', '');
$("#" + $(this).attr('id').replace("answer", "radioNo")).attr('checked', 'checked');
break;
default:
newClassName = "AnswerEmpty";
newValue = -1;
$("#" + $(this).attr('id').replace("answer", "radioYes")).attr('checked', '');
$("#" + $(this).attr('id').replace("answer", "radioNo")).attr('checked', '');
}
$("#" + hiddenAnswerId).val(newValue);
$(this).removeClass().addClass(newClassName);
});
Jetzt möchte ich dem Benutzer ermöglichen, auf einen Startpunkt zu klicken, und diese Antwort soll alle folgenden Fragen bis zu dem Punkt ausfüllen, an dem er auf das zweite Element geklickt hat. Das können 10 Fragen oder 20 Fragen sein, das ist eine unbekannte Variable. Es kann eine Seite mit 130 Fragen geben, und 20 Fragen in einer Reihe können "Ja" lauten. Wie oben erwähnt, hat jede Zeile eine Zelle "Frage" und die Zelle davor ist die Elementzelle.
Ich weiß, wie man das Startelement und das Endelement auf der Grundlage eines Jquery-Selektors/einer Funktion festlegt, der/die an ein unten aufgeführtes Click/Dblclick-Ereignis gebunden ist.
Ich bin mir nicht sicher, wie ich das Dom durchlaufen oder alle Elemente auswählen kann, die ich zwischen den beiden ausgewählten Punkten auf der Seite bearbeiten muss.
var StartItem;
var EndItem;
$(".item").bind("click dblclick", function(e) {
var StartClassName = "AnswerUnknown";
var EndClassName = "AnswerUnknown";
var StartAnswerId;
var EndAnswerId;
var StartAnswer;
if (StartItem === undefined) {
StartItem = this;
StartAnswerId = $(this).attr('id').replace("item", "rs");
StartAnswer = parseInt($("#" + StartAnswerId).val());
}
else {
if (EndItem === undefined) {
EndItem = this;
EndAnswerId = $(this).attr('id').replace("item", "rs");
EndAnswer = parseInt($("#" + EndAnswerId).val());
}
}
if (StartItem == this) {
$(this).removeClass().addClass(StartClassName);
}
if (EndItem == this) {
$(this).removeClass().addClass(EndClassName);
}
});