php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.08.2009, 14:09  
Neuer Benutzer
 
Registriert seit: 29.03.2009
Beiträge: 20
grunz befindet sich auf einem aufstrebenden Ast
Standard selectboxen durch checkbox aktivieren

Hallo!

ich möchte mehrere selectboxen durch eine Checkbox aktivieren bzw. deaktivieren können.

Das ganze sieht so aus, dass eine "Eingabezeile" aus einer Checkbox und einer dynamischen Anzahl von generierten Selectboxen besteht. Die Checkbox ist am Anfang "unchecked" und die Selectboxen sind "disabled". Wenn der Benutzer die Checkbox anklickt, sollen die Selectboxen der jeweiligen Zeile akitv werden.

Das ganze funktioniert mit einer Checkbox und EINER Selectbox schon wie gewünscht:
Code:
function myFunction(objCheckbox, objInputfield) {
        objInputfield.disabled = (objCheckbox.checked) ? false : true;
}

...
<input type="checkbox" name="Start" value="true" onclick="myFunction(this, this.form.selectbox_1);" />
 <select name="selectbox_1" disabled="disabled" >
---
Allerdings sollen jetzt auch mehrere Selectboxen verwendet werden, die würden dann eben selectbox_1, selectbox_2, .... heißen wobei die Anzahl dynamisch ist...

Wie kann ich das lösen? Ich hatte sowas versucht:

Code:
function myFunction(objCheckbox, name, anzahl) {
        for(i=1; i<=anzahl; i++) {
            objInputfield = 'document.ergebnisse.' + name +  i;
            objInputfield.disabled = (objCheckbox.checked) ? false : true;
        }
}

...
<input type="checkbox" name="Start" value="true" onclick="myFunction(this, 'selectbox_', 3);" />
Aber so funktioniert es nicht...

Geändert von grunz (30.08.2009 um 16:16 Uhr).
grunz ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.08.2009, 15:26  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hallo,
zunächst mal, kannst du folgenden Code verkürzen:
Code:
objInputfield.disabled = (objCheckbox.checked) ? false : true;
checked liefert bereits ein boolsches TRUE bzw. FALSE. Das hier reicht also aus:
Code:
objInputfield.disabled = !objCheckbox.checked; // ! negiert das Ergebnis, aus TRUE wird FALSE und umgekehrt
Hiermit:
Code:
objInputfield = 'document.ergebnisse.' + name +  i;
erzeugst du einen String, wie du auf Formularelemente zugreifst, findest du hier:
SELFHTML: JavaScript / Objektreferenz / elements

Mit document.forms[FORMNAME].elements[ELEMENTNAME] greifst du auf einzelne Formularelemente zu.
FORMNAME ist dabei ein String, genauso wie ELEMENTNAME. Diese kannst du also dynamisch z.B. in deiner for-Schleife generieren. Du kannst alert() benutzen, um dir jegliche Art von Variablen in JS auszugeben, um deinen Code und erzeugte Variablenwerte zu überprüfen.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 30.08.2009, 15:32  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Dir fehlt auf jeden Fall ne geschweifte schliessende Klammer für die IF-Klausel!
Arne Drews ist offline   Mit Zitat antworten
Alt 30.08.2009, 16:15  
Neuer Benutzer
 
Registriert seit: 29.03.2009
Beiträge: 20
grunz befindet sich auf einem aufstrebenden Ast
Standard

ok also statisch gehts jetzt so halsbwegs. aber ich tu mich schwer mit JavaScript.

Code:
document.forms['ergebnisse'].elements['Start_pr1'].disabled = false;
mit dieser Zeile "aktiviere ich das Feld.
Jetzt soll "Start_pr" in einer Schleife hochgezählt werden... Das geht auch, aber ich kann das Formularelement nicht ansprechen:

Wie baue ich denn die Zeile oben in einer Schleife auf?
Code:
for(i=0; i<=x; ++i) {
    var tmp_name = "Start_pr" + [i];
    objInputfield = document.forms['ergebnisse'].elements['tmp_name'];
    objInputfield.disabled = (objCheckbox.checked) ? false : true;
}
so klappt es nicht. Ich nehme an es liegt daran, dass tmp_name als String und nicht als Variable verwendet wird. Aber wie "sage" ich dass hier der Inhalt der Variablen eingesetzt werden soll?
grunz ist offline   Mit Zitat antworten
Alt 30.08.2009, 16:16  
Neuer Benutzer
 
Registriert seit: 29.03.2009
Beiträge: 20
grunz befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Arne Drews Beitrag anzeigen
Dir fehlt auf jeden Fall ne geschweifte schliessende Klammer für die IF-Klausel!
IF-Klausel? Du meintest die von der for-Schleife nehm ich an. Hab ich noch eingefügt...
grunz ist offline   Mit Zitat antworten
Alt 30.08.2009, 16:22  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Ach ja sorry, die FOR-Schleife...

Zitat:
var tmp_name = "Start_pr" + [i];
Wozu die eckigen Klammern ???

Geändert von Arne Drews (30.08.2009 um 16:23 Uhr). Grund: Nachtrag
Arne Drews ist offline   Mit Zitat antworten
Alt 30.08.2009, 16:32  
Neuer Benutzer
 
Registriert seit: 29.03.2009
Beiträge: 20
grunz befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Arne Drews Beitrag anzeigen
Ach ja sorry, die FOR-Schleife...


Wozu die eckigen Klammern ???
gute Frage, hab ich jetzt rausgenommen. Aber bringt keine Änderung.
grunz ist offline   Mit Zitat antworten
Alt 30.08.2009, 16:35  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Fehler liegt in dieser Zeile:
Code:
objInputfield = document.forms['ergebnisse'].elements['tmp_name'];
Fällt Dir am Ende was auf?!
Arne Drews ist offline   Mit Zitat antworten
Alt 30.08.2009, 16:35  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Bitte arbeite genauer, dein Eingabefeld hat einen Unterstrich im Namen, den du aber nicht angibst. Wie gesagt, mit alert() kannst du dir ausgeben lassen, was für Variablen du erzeugst.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 30.08.2009, 16:38  
Neuer Benutzer
 
Registriert seit: 29.03.2009
Beiträge: 20
grunz befindet sich auf einem aufstrebenden Ast
Standard

je länger ich hier rumprobiere umso unklarer wird mir das alles.

Code:
function myCheckboxFunction(objCheckbox, baseName, pr_count) {
        //document.forms['ergebnisse'].elements['Start_pr1'].disabled = false;
        alert(document.forms['ergebnisse'].elements['Start_pr1'].value);
        for(i=1; i<=pr_count; i++) {
            var tmp_name = baseName + "_pr" + i;
            objInputfield = "document.forms['ergebnisse'].elements['" +tmp_name+ "']";
            alert(objInputfield);
            objInputfield.disabled = (objCheckbox.checked) ? false : true;
        }
}

Aufruf: 
<input type="checkbox" name="Start" value="true" onclick="myCheckboxFunction(this, 'Start' , 3);" />
Und was dabei rauskommt:
Wenn ich die Checkbox anklicke, liefert der erste alert den Wert 0, das passt ja auch, denn die entsprechende Selectbox enthält den Wert 0.
Dann wird die Schleife durchlaufen und die alerts liefern:
document.forms['ergebnisse'].elements['Start_pr1']
document.forms['ergebnisse'].elements['Start_pr2']
document.forms['ergebnisse'].elements['Start_pr3']
Der String wird also richtig generiert, aber die Selectboxen werden nicht "enabled".

Also ich blick grad gar nicht mehr durch...
grunz ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Checkbox Zustand aus DB auslesen Knutschi PHP Tipps 2009 22 05.05.2009 14:02
checkbox behält den wert nicht nieselfriem PHP Tipps 2009 8 19.02.2009 23:02
[Erledigt] onclick problem bei checkbox familyman JavaScript, Ajax und mehr 5 31.01.2009 19:39
Aktivieren einer Checkbox aktiviert viele andere Checkboxen buggybugga HTML, Usability und Barrierefreiheit 3 12.03.2007 16:23
Checkbox Text daneben andrew22 HTML, Usability und Barrierefreiheit 7 22.02.2007 16:44
Checkbox aktivieren snatch-ic HTML, Usability und Barrierefreiheit 3 30.08.2006 17:20
selectbox durch checkbox aktivieren HTML, Usability und Barrierefreiheit 1 13.04.2006 00:23
Checkbox jacos PHP Tipps 2006 5 01.04.2006 10:19
Check my Checkbox JanM PHP Tipps 2006 4 04.02.2006 17:44
[Erledigt] Checkbox wert weitergeben PHP Tipps 2007 8 09.12.2005 14:30
[Erledigt] Checkbox via Button steuern HTML, Usability und Barrierefreiheit 2 17.10.2005 09:53
checkbox .. mehrere werte auslesen bei gleichem namen PHP Tipps 2005-2 9 12.10.2005 15:24
Checkbox automatisch aktivieren problem HTML, Usability und Barrierefreiheit 3 04.04.2005 17:26
Überprüfen ob die Checkbox checked ist? Paulo HTML, Usability und Barrierefreiheit 1 22.11.2004 13:18
[Erledigt] Formularelement Checkbox in Interaktion mit MYSQL Datenbanken 4 13.07.2004 12:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
kontrollkästchen aktivieren, http://www.php.de/javascript-ajax-und-mehr/58573-selectboxen-durch-checkbox-aktivieren.html, selectbox ausgrauen, onclick checkbox aktivieren, selectbox via checkbox aktivieren, selectbox checked, html checkbox startwert, php selectbox onclick, javascript onclick checkbox aktivieren, html selectbox onclick, php select felder option unchecked, javascript checkbox deaktivieren select, jsf ajax checkbox formular einblenden, html select deaktivieren], felder aktivieren ajax jsf, jsf selectbooleancheckbox negation, selectbox durch checkbox aktivieren, javascript checkbox disabled onclick, php optonsfeld per ceckbox, checkbox statt selectbox

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:50 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum