2009-03-31 4 views
0

Ich habe eine Reihe von Kontrollkästchen und Eingabe Typ = "Text" Bereiche, wobei ich den Zustand des Kontrollkästchens auf True gesetzt haben muss, wenn der Wert im Textbereich ändert. Einfach genug. Ich habe das erfolgreich gemacht:In Javascript, wie beziehe ich mich auf this.form.Checkbox [5] .checked?

<input name="fixed" type="checkbox"> 
<input name="stuff" type="text" onchange="this.form.fixed.checked=true"> 

Das funktioniert gut. Sie haben das Feld dann bearbeiten draus klicken, aber das ist für meine Bedürfnisse in Ordnung:

... aber wenn ich zu diesem Schalter:

<input name="fixed[0]" type="checkbox"> 
<input name="stuff" type="text" onchange="this.form.fixed[0].checked=true"> 
<input name="fixed[1]" type="checkbox"> 
<input name="stuff" type="text" onchange="this.form.fixed[1].checked=true"> 

ich keine Änderung mein Kontrollkästchen, wenn ich bearbeiten:

Meine einzigen Java Skript-Know-how kommt aus dem googeln dieser Art von Dingen, fürchte ich. Hat jemand bessere Informationen dazu, als das Oracle von Google auf The Mountain auf Lager hat?

dank ...

Antwort

6

Wechsel von Punktnotation zu Dirac-Notation

this.form['fixed[0]'].checked 
.!
+0

Prost! Eine schnelle Änderung in meiner Rails-Ansicht (es erzeugt nur rohen Text für den Kunden, also habe ich das in meiner Frage weggelassen), hat es das erste Mal genagelt! – Sniggerfardimungus

0

Es könnte sein, dass Sie einige schattigen Praktiken in HTML abmischen, und wenn Sie es in Javascript zu tun, sie zu brechen.

Also this.form.fixed [1] in Javascript sagt wirklich "Das zweite Element im Array this.form.fixed. Also ich denke, das ist das Problem. Versuchen Sie, Ihre Elemente fixed0 und fixed1 und sehen, ob das funktioniert.

bearbeiten: Sie könnten auch Klammer-Notation, wie von Peter dargestellt, die ohne editieren der Namen der Eingänge das Problem lösen sollte

0

Machen Sie sich das Leben leichter.

für die Elemente einzigartigen IDs erstellen Sie versuchen, aus den Elementen, um sie zu verweisen und beziehen sich auf die Sie Ihre Veranstaltungen binden:

<input name="fixed[0]" type="checkbox" id="fixed_0"> 
<input name="stuff" type="text" onchange="document.getElementById('fixed_0').checked=true"> 
<input name="fixed[1]" type="checkbox" id="fixed_1"> 
<input name="stuff" type="text" onchange="document.getElementById('fixed_1').checked=true">