ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
404
404
EMPFEHLEN
-
04.08.10 13:09 #1
- Registriert seit
- Oct 2008
- Beiträge
- 18
Guten Tag,
ich bin gerade dabei, ein kleines Rechnungsprogramm zu schreiben. Kurz zur Situation:
Die Seite "Neue Rechnung schreiben" wird aufgerufen.
Neben Daten wie Adresse etc., hat der Benutzer vier Oberkategorien zur Verfügung.
Klickt man in einer Kategorie auf den Link "Artikel hinzufügen", blende ich einen Div mit den Artikeln zu der Kategorie ein.
Mit Klick auf einen Artikel, werden in einen Div zwei Formularfelder (Anzahl + Preis) hinzugefügt.
Ich möchte aber nun, dass ich in dem Div wo die Artikel hinzugefügt werden, ein Eingabefeld habe, wo ich einen festen Preis eingeben kann.
Dieser sollte dann bei allen eingefügten Preisfelder als value eingesetzt werden.
Hier ist mein Script, womit ich die Felder in den Div einfüge:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
var RowID = 0; function AddRow(part_id,cat_id,part_beschreibung,kategorie) { RowID++; var label = new Element('label', {'for': part_id + 'anzahl', 'style': 'display: block; width: 300px; height: 18px; float: left; line-height: 18px; padding-left: 5px; margin-right: 15px; background-color: #999999;'}).update(part_beschreibung); var input_partid = new Element('input', {'type': 'hidden','value': '' + part_id + '','id': part_id + 'partid','name': 'row['+part_id+'][partid]'}); var input_catid = new Element('input', {'type': 'hidden','value': '' + cat_id + '','id': cat_id + 'partid','name': 'row['+part_id+'][catid]'}); var input_anzahl = new Element('input', {'type': 'text','id': part_id + 'anzahl','name': 'row['+part_id+'][anzahl]'}); var input_preis = new Element('input', {'type': 'text','id': part_id + 'preis','name': 'row['+part_id+'][preis]'}); var remove_link = new Element('a', { 'class': 'foo', href: '#', onclick: 'RemoveRow(' + RowID + ')' }).update("entfernen"); var a = new Element('div', { 'id': 'feld' + RowID + '' }) $('Posten' + kategorie + 'List').insert ({'bottom' : a }); $('feld' + RowID).writeAttribute("style","border-top: 1px #999999 dotted; padding-top: 15px; padding-bottom: 15px;"); $('feld' + RowID).insert ({'bottom' : label }); $('feld' + RowID).insert ({'bottom' : input_partid }); $('feld' + RowID).insert ({'bottom' : input_catid }); $('feld' + RowID).insert ({'bottom' : input_anzahl }); $('feld' + RowID).insert ({'bottom' : input_preis }); $('feld' + RowID).insert ({'bottom' : remove_link }); $(part_id + 'anzahl').writeAttribute("style","border: 1px #669900 solid; margin-right: 15px; width: 30px;"); $(part_id + 'preis').writeAttribute("style","border: 1px #669900 solid; margin-right: 15px;"); }
Und so sieht der Container aus, wo die Artikellinks drin sind:
Ich hoffe ihr versteht was ich meine und könnt mir einen Tipp geben.HTML-Code:<div id="PostenauswahlArbeitslohnDiv" style="z-index: 999; display: none; padding: 5px; width: 200px; min-height: 200px; border: solid #666666 1px; background-color: #cccccc; position: fixed; left: 50%; top: 50%; margin-left: -150px; margin-top: -100px;"> <a href="#" class="AuswahlmenuBold" onclick="ShowPartDiv(0,'arbeitslohn'); return false;"><span class="AuswahlmenuBold">Unterkategorie 1</span></a><br /> <div id="div_arbeitslohn_0" style="display:none;"> <a href="#" class="AuswahlmenuSub" onclick="AddRow(1,1,'Arbeitslohn 1','Arbeitslohn')"><span class="AuswahlmenuSub">Arbeitslohn 1</span></a><br /> <a href="#" class="AuswahlmenuSub" onclick="AddRow(2,1,'Arbeitslohn 2','Arbeitslohn')"><span class="AuswahlmenuSub">Arbeitslohn 2</span></a><br /> <a href="#" class="AuswahlmenuSub" onclick="AddRow(3,1,'Arbeitslohn 3','Arbeitslohn')"><span class="AuswahlmenuSub">Arbeitslohn 3</span></a><br /> </div> <a href="#" class="AuswahlmenuBold" onclick="ShowPartDiv(1,'arbeitslohn'); return false;"><span class="AuswahlmenuBold">Unterkategorie 2</span></a><br /> <div id="div_arbeitslohn_1" style="display:none;"><a href="#" class="AuswahlmenuSub" onclick="AddRow(4,1,'Arbeitslohn 4','Arbeitslohn')"><span class="AuswahlmenuSub">Arbeitslohn 4</span></a><br /> <a href="#" class="AuswahlmenuSub" onclick="AddRow(5,1,'Arbeitslohn 5','Arbeitslohn')"><span class="AuswahlmenuSub">Arbeitslohn 5</span></a><br /> <a href="#" class="AuswahlmenuSub" onclick="AddRow(6,1,'Arbeitslohn 6','Arbeitslohn')"><span class="AuswahlmenuSub">Arbeitslohn 6</span></a><br /> <a href="#" class="AuswahlmenuSub" onclick="AddRow(7,1,'Arbeitslohn 7','Arbeitslohn')"><span class="AuswahlmenuSub">Arbeitslohn 7</span></a><br /> </div> <hr noshade width="100%" size="1" color="#669900" style="margin-top: 5px; margin-bottom: 5px;"> <input type="text" id="PreisArbeitslohn" size="24" style="border: 1px #669900 solid; width:100px;"> <a href="javascript:void(0);" onclick="document.getElementById('PostenauswahlArbeitslohnDiv').style.display='none';">Fertig</a> </div>
Danke
Gruß Sven
-
Moin Sven,
ich glaube, es wäre hilfreich, wenn du mal eine bis dahin funktionierende Demo bereitstellst, aus den Codeschnipsel inkl. deiner Erläuterung lässt sich nur schwer erkennen, was du da vorhast.
-
06.09.10 10:02 #3
- Registriert seit
- Oct 2008
- Beiträge
- 18
Hallo Sven,
zwar sehr spät aber jetzt endlich habe ich wieder die Zeit um mich darum zu kümmern.
Unter dem folgenden Link kannst du eine Demo runterladen.
Kurze Erläuterung. Der Div der geöffnet ist, listet später alle verfügbaren Kategorien auf. Mit Klick auf eine Kat, werden alle Positionen der Kat angezeigt. Klickt man eine Position an, wird sie direkt ins Rechnungsformular übernommen.
Unter den Kategorien ist ein Textfeld. Das Feld soll als Pflichtfeld definiert sein. Dementsprechend soll sich der Kat-Div nicht schließen lassen, bevor ein Wert in das Feld eingetragen ist. Das bekomme ich hin.
Ich bekomme es einfach nicht hin, dass wenn ich in das Textfeld einen Wert eintrage, dieser automatisch in die vorher eingefügten Formularfelder eingetragen wird. Er muss ich das rechte Textfeld rein, da dort der Preis steht.
Verstehst du wie ich das meine? Wenn nicht fertige ich eine Skizze an
Danke schonmal.
Gruß Sven
http://www.schnettler.biz/DEMO.zipGeändert von nick_beat20 (06.09.10 um 10:03 Uhr) Grund: Was vergessen^
-
Hallo,
also ich würde grundsätzlich in dem Sinne die document.createElement() benutzen, hatte bei mir bisher noch nie Probleme gemacht. Dadurch kannst du dann zB.: ohne zusätzlich über eine ID gehend auf das DOM Objekt zu greifen. Ich erkläre mal eben was ich meine. Du kannst entweder:
Code :1 2 3
var input = document.createElement("input"); input.id("keks"); $("#keks");
machen, oder aber direkt statt $("#keks"), $(input) machen, damit sparste sogar bisschen an JavaScript arbeit
Was deine Frage angeht, gibt es dafür 2 Wege. Entweder du machst: input.value = "dein wert" oder in $(input).attr("value","dein wert");
beides sollte reibungsfrei funktionieren.
-
Naja, ob man es nun mit createElement() oder mit der PrototypeJS-Methode macht, ist eigentlich egal.
Die Methode von PrototypeJS bietet ja doch einges an Ersprnis beim Schreibaufwand, wenn man viele Attribute hinzufügen will.
Ich nehme mal an, das Hauptproblem liegt beim Auslesen des Wertes des richtigen Inputs.
Die Zeile, wo der Wert benötigt wird, ist ja jene:
Code :1
var input_preis = new Element('input', {'type': 'text','id': part_id + 'preis','name': 'row['+part_id+'][preis]'});
Wie kommt man nun an den Wert?
Angenommen, die ID des Textfeldes setzt sich immer zusammen aus "Preis" und dem Kategorie-Namen(im Beispiel also PreisArbeitslohn)...dann hätte man etwas, womit man den Wert auslesen könnte:
Code :1
$('Preis'+kategorie).value
Summa Summarum:
Code :1
var input_preis = new Element('input', {'value':$('Preis'+kategorie).value,'type': 'text','id': part_id + 'preis','name': 'row['+part_id+'][preis]'});
-
Hi,
wenn der Wert immer in das letzte Textfeld des zuletzt zugefügten DIVs soll, könntest du es wie folgt versuchen:
CiaoCode :1
<input type="text" id="PreisArbeitslohn" onkeyup="$$('div[id^=\'feld\']:last-child input').last().value = this.value;" size="24" style="border: 1px #669900 solid; width:100px;">
QuaeseVielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
----
Der "Fortsetzungsroman" auf www.leuteforum.de
New kind to realize large scalable projects with jQuery: jQuery SDK
Ähnliche Themen
-
Summe aus Spalteninhalt einer dynamisch generierten Tabelle
Von DrBonsai im Forum PHPAntworten: 4Letzter Beitrag: 24.03.10, 15:16 -
Dynamisch erstellten Button Code zuweisen
Von Rene42 im Forum .NET Windows FormsAntworten: 1Letzter Beitrag: 25.09.09, 09:18 -
Größe dynamisch zuweisen
Von Bunny1502 im Forum Flash PlattformAntworten: 7Letzter Beitrag: 22.11.06, 11:31 -
Buttons eines dynamisch generierten Menüs mit unterschiedlichen Aktionen versehen!
Von poli-dori im Forum Flash PlattformAntworten: 2Letzter Beitrag: 04.08.05, 12:56 -
setTextFormat-Rollovereffekt bei dynamisch generierten Menu funktioniert nicht!
Von poli-dori im Forum Flash PlattformAntworten: 7Letzter Beitrag: 03.08.05, 15:24





Zitieren

Login





