Camping_RIDER: geht leider nicht... irgendwas hab ich falsch

Beitrag lesen

Aloha ;)

if (triggerAll) {

Zu deiner Frage im anderen Posting: triggerAll ist ein Parameter, der bei Funktionsaufruf definiert wird (lies: der ist kein integraler Sprachbestandteil, den haben wir selbst ins Leben gerufen). Zu seiner Funktion: Wir setzen ihn true, wenn ein Aufruf der Funktion über onchange kommt - denn dann sollen auch die onchange-Funktionen (in diesem Fall die radioSelect-Funktion mit entsprechendem Parameter) der anderen Radio-Buttons mit aufgerufen werden. Wenn wir innerhalb des onchange Vorgang sind und radioSelect für alle anderen Radio-Buttons aufrufen, setzen wir ihn logischerweise false - denn ansonsten würden wir ja eine Endlosschleife provozieren. Stell dir vor radio-Button 1 ruft radioSelect auf, das ruft radioSelect für radio-Button 1-5 auf, das wiederum ruft jeweils radioSelect für radio-Button 1-5 auf ... und am Ende stürzt der Browser ab ;)

Kurz gesagt: triggerAll ist bei Aufruf über EventHandler true und bei direktem, rekursivem Aufruf false.

echo '<div><input type="radio" name="radio'.$week.'" id="v'.$week.'" onchange="radioSelect(this,true);"/> <label for="v'.$week.'" ></label>
<input type="radio" name="radio'.$week.'" id="b'.$week.'" onchange="radioSelect(this,true);"/> <label for="b'.$week.'" class="inline"></label></div>';

echo '<div ><input  id="pVMin'.$week.'" name="pVMin'.$week.'" type="number" step="0.01" min="0" max="99.99" placeholder="'._('6.50').'" onchange="radioSelect(this,true);"/></div>' ;

echo '<div ><input  id="pVMax'.$week.'" name="pVMax'.$week.'" type="number" step="0.01" min="0" max="99.99" placeholder="'._('6.90').'" onchange="radioSelect(this,true);"/></div>';
.
.
.usw.

echo '<div id="tab'.$tabrid.'">';
// hier steht der add-new-row-botton der immer ausgetauscht wird
// genau an diese Stelle werden dann die neuen Conatiner geschoben und auch der neue Button
echo '<div>';

  
Sieht soweit einigermaßen aus wie im Sinne des Erfinders... Zumindest fast. Warum jetzt auf einmal auch die <input type="number" eine onchange-Funktion "radioSelect" haben, weiß ich nicht? Sinnigerweise sollten nur die <input type="radio" auf radioSelect hören. Sonst bekommst du ein Verhalten, das du so garantiert nicht willst (bzw.: Es wird nichts ändern, nur JavaScript-Fehler werfen wie Hölle, da die input-number kein Geschwisterelement namens input haben :P ).  
  

> dein zusätzlicher Code  
> ~~~javascript
  

> //beim Laden einer neuen Zeile...  
> //alle Radios aus (dazu reichts den ersten an und dann wieder aus zu machen!  
> // -> Ungewöhnlich, aber wirkungsvoll  
> document.getElementsByName('radio')[0].checked = true;  
> document.getElementsByName('radio')[0].checked = false;  
> // und dessen onchange nochmal einzeln manuell feuern, weil Kommentar  
> radioSelect(document.getElementsByName('radio')[0],false);  
> 

muss dieser code noch in die function?

Ne. Der muss dahin, wo, Zitat

//beim Laden einer neuen Zeile...

also sobald AJAX eine neue Zeile anfordert, an dieser Stelle müssen diese Codezeilen stehen. Zumindest hattest du ja gesagt, dass beim Laden einer neuen Zeile alle input-Felder gesperrt werden sollten.

Für 'radio' musst du natürlich noch den name der radio-Buttons einsetzen, die betroffen sein sollen.

und der

radioSelect(document.getElementsByName('radio')[0],false);


>   
> wo muss der noch hin?  
  
Direkt dahin, wo er oben im Codeschnipsel steht. Das Codeschnipsel ist eine funktionale Einheit.  
  

> sorry, aber ich sagte ja, ich bräuchte was ich verwenden kann...nur dann kann ich es richtig nachvollziehen..... wenn ich nicht weiss wo was hinkommt dann drehe ich mich noch wochen lang im kreis  
>   
> für euch mag das alles logisch sein,,,, aber leider für mich nicht  
  
Tja. Ich glaube wir stehen vor einem ernsten Problem. Für mich stellt sich die Situation grad so dar: Du postest Codefragmente und umschreibst das Problem. Ich tätige aufgrund mangelnder-Insiderkenntnissen aufgrund deiner Schilderungen Annahmen darüber, was die Lösung sonst noch so können muss, außer das Problem zu lösen. Dann poste ich die Lösung. Dann ergeben sich neue Probleme, weil meine Lösung nicht genau auf dein Problem passt, weil meine Annahmen nicht die richtigen waren, weil mir genaue Informationen gefehlt haben.  
  
Kurzum: Wir drehen uns hier unnötig oft im Kreis. Vollkommen unproblematisch wäre es, wenn du ein Beispiel online stellen könntest (da du auf PHP angewiesen bist, nimm z.B. Freehoster wie [bplaced](http://www.bplaced.net/)), an dem wir die einzelnen auftauchenden Probleme abarbeiten könnten. Dann könnte ich dir genau sagen, wo du was hinschreiben musst und dann wäre mir - weil ichs vor mir habe - auch viel klarer, wo das Problem liegt. Ich predige schon lange das Einbringen von live-Beispielen als ersten Schritt auf dem Weg zur Lösung bei entsprechend komplizierten Problemen...  
  
Grüße,  
  
RIDER  
  

-- 
Camping\_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller  
  
ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[