2010-11-18 9 views
0

Dies sollte einfach sein, aber nach dem Durchsuchen mehrerer Bibliotheken (jquery bevorzugt!) Und sogar einfach altes Javascript, zeichne ich eine leere.Formular Formular dynamisch ändern abhängig von Wert in Form?

Mit anderen Worten, eine Zeile mit 3 Eingabefeldern, 2 vorgefüllt mit Typ von, sagen wir, Käse und Gurke, dann eine ungefüllte Box für eine Nummer, und eine Absenden-Schaltfläche rechts davon. Wiederhole mal n Zeilen.

Um es anders auszudrücken: Stellen Sie sich ein Formular vor, das als eine Reihe von Zeilen aus einem Suchergebnis dargestellt wird. Sagen wir, es gibt 8 Ergebnisse, das sind 8 Zeilen. Der Benutzer kann seine Auswahl in einen von 100 "Slots" speichern. Es ist einfach, wenn jede Zeile einen Namen oder einen Buchstaben haben kann; Ich rufe einfach jede Sendeschaltfläche eine Nummer an, 1 bis 8, und wenn sie 6 drückt, weiß sie, dass es Zeile 6 ist, die sie speichern möchte. Es verwendet Malsups jquery-Formular, um es in einer Ajaxy-Art zu senden, so dass das Formular nicht jedes Mal aktualisiert werden muss.

Aber das erlaubt nicht freie Wahl, von welchem ​​"Slot" das Ergebnis gespeichert wird. Wenn ich den Submit-Button bekommen könnte, um die Nummer in der Zelle links davon zu reflektieren, wäre ich weg.

Aber ich kann nicht, also bin ich nicht. Und ich bin anscheinend die einzige Person, die so etwas Unsinn macht. Irgendein besserer Weg?

+0

Wenn Sie sagen, die Schaltfläche "Senden" sollte dies widerspiegeln, meinen Sie beispielsweise den Namen der Übermittlungsschaltfläche, so dass Sie sie im Code abrufen können? – Orbling

+0

Wenn Sie wissen, dass Sie '6' gedrückt haben, können Sie den Wert der dritten Änderung auch in Zeile 6 erhalten, richtig? Wenn diese Änderung die Steckplatznummer enthält, können Sie diese Nummer zum Speichern der Zeile verwenden. Ich sehe das Problem nicht, aber vielleicht liegt es daran, dass ich die Frage nicht verstehe. – GolezTrol

Antwort

1

Nehmen wir an, Ihr Submit-Button ist ein Button-Element.

$('table').delegate('button', 'click', function(e) { 

    var formData = {} 

    $(this).closest('tr').find('input').each(function() { 
    formData[this.name] = this.value; 
    }); 

    //Add in your code to ajax it off... 

    e.preventDefault(); //since buttons/submits behave differently in each browser. 

}); 

// Nun haben Sie alle Ihre formData in einem Objekt. Sende es über deine Ajax-Sache.

+0

Hallo. Es tut mir leid, dass es so lange gedauert hat, das als Antwort zu markieren. Persönliches Zeug kam auf. Wie dem auch sei, ich konnte das obige nicht für mich in diesem Fall verwenden, aber Ihr Code gab mir 3 sehr gute Hinweise darüber, was ich mit jQuery machen kann und ich habe Bits in anderen Teilen der Seite benutzt. Also vielen Dank! – talkingnews

+0

Kein Problem, ich bin froh, könnte einige jQuery Wissen herum teilen! –

Verwandte Themen