checkboxen
Tobias H.
- javascript
hallo,
ich habe ca. 30 checkboxen in einer reihe gesetzt. hinter jeder chechbox steckt eine verfügbarkeit. jetzt möchte ich vor diese reihe ein textfeld schalten, bei dem nach eingabe einer zahl (z.b. 3) alle checkboxen bei denen die verfügbarkeit kleiner als 3 ist mit einem bild ( zum signalisieren dass nichts verfügbar ist ) ersetzt werden.
Wie kann man das am besten realisieren?
Hier ein beispielhafter codeschnipsel mit einer checkbox:
<input type="checkbox" name="<? echo $day; ?>" value="...">
jetzt das versteckte feld in dem bei value die verfügbarkeit gesetzt ist:
<input type="hidden" name="<? echo $day; ?>" value="3">
würde mich über Hilfe sehr freuen!
Beste Grüße,
Tobias H.
Wie kann man das am besten realisieren?
Hier ein beispielhafter codeschnipsel mit einer checkbox:
<input type="checkbox" name="<? echo $day; ?>" value="...">
jetzt das versteckte feld in dem bei value die verfügbarkeit gesetzt ist:
<input type="hidden" name="<? echo $day; ?>" value="3">
Was ist $day?
Struppi.
Wie kann man das am besten realisieren?
Hier ein beispielhafter codeschnipsel mit einer checkbox:
<input type="checkbox" name="<? echo $day; ?>" value="...">
jetzt das versteckte feld in dem bei value die verfügbarkeit gesetzt ist:
<input type="hidden" name="<? echo $day; ?>" value="3">
Was ist $day?
Struppi.
$day ist einfach die variable für den tag.
zählt also je nach dem wie viele tage ein monat hat hoch.
gruß,
tobias
$day ist einfach die variable für den tag.
zählt also je nach dem wie viele tage ein monat hat hoch.
Na gut, aber für JS ist nur interessant, was im Browser ankommt, dein PHP code ist bei der Frage also nicht hilfreich.
Du hast also zwei gleichnamige Felder, von denen eines eine Checkbox ist und eins ein verstecktes Feld?
Wie wertest du das auf dem Server aus?
Struppi.
$day ist einfach die variable für den tag.
zählt also je nach dem wie viele tage ein monat hat hoch.Na gut, aber für JS ist nur interessant, was im Browser ankommt, dein PHP code ist bei der Frage also nicht hilfreich.
Du hast also zwei gleichnamige Felder, von denen eines eine Checkbox ist und eins ein verstecktes Feld?
Wie wertest du das auf dem Server aus?Struppi.
Sorry, ich hatte nen Fehler gepostet. Das muss heißen:
<input type="hidden" name="hidden_<? echo $day; ?>" value="3">
jetzt passts...;) aber das feld habe ich jetzt nur hier reingepostet, weil ich dachte, man kann das dann mit javascript später auslesen um die verfügbarkeit zu bekommen. oder wie würdest du das lösen?
tobias
hi,
<input type="hidden" name="hidden_<? echo $day; ?>" value="3">
jetzt passts...;) aber das feld habe ich jetzt nur hier reingepostet, weil ich dachte, man kann das dann mit javascript später auslesen um die verfügbarkeit zu bekommen.
Du kannst doch genauso gut die Verfügbarkeit gleich im value der Checkbox ablegen.
gruß,
wahsaga
hi,
<input type="hidden" name="hidden_<? echo $day; ?>" value="3">
jetzt passts...;) aber das feld habe ich jetzt nur hier reingepostet, weil ich dachte, man kann das dann mit javascript später auslesen um die verfügbarkeit zu bekommen.
Du kannst doch genauso gut die Verfügbarkeit gleich im value der Checkbox ablegen.
gruß,
wahsaga
Das geht leider nicht, da habe ich noch andere Werte drinstehen.
Deswegen wollte ich auch das Versteckte-Feld einbauen.
Tobias
Bitte zitiere sinnvoll.
Sorry, ich hatte nen Fehler gepostet. Das muss heißen:
<input type="hidden" name="hidden_<? echo $day; ?>" value="3">
Ist zwar immer noch PHP Code, aber jetzt wird's klarer und die Textfelder haben auch einen Bezug zu $day?
Struppi.
moin Tobias :)
ich habe ca. 30 checkboxen in einer reihe gesetzt. hinter jeder chechbox steckt eine verfügbarkeit. jetzt möchte ich vor diese reihe ein textfeld schalten, bei dem nach eingabe einer zahl (z.b. 3) alle checkboxen bei denen die verfügbarkeit kleiner als 3 ist mit einem bild ( zum signalisieren dass nichts verfügbar ist ) ersetzt werden.
Wie kann man das am besten realisieren?
Hier ein beispielhafter codeschnipsel mit einer checkbox:
<input type="checkbox" name="<? echo $day; ?>" value="...">
jetzt das versteckte feld in dem bei value die verfügbarkeit gesetzt ist:
<input type="hidden" name="<? echo $day; ?>" value="3">
1.musst du natürlich den Wert auslesen, der in das Textfeld geschrieben wurde.
2. prüfst du ob dort eine Zahl eingegeben wurde.
3. Gehst du alle Elemente deiner Form mit einer For-Schleife durch.
4. Prüfst du in der Schleife, ob es sich beim aktuellen Element um ein Hidden-Field handelt
5. Wenn das der Fall ist, ermittelst du deinen Wert daraus und entscheidest ob die Checkbox, die sicherlich vor dem hidden field sitzt, ersetzt werden soll (Achtung! Hier vom [parent ausgehen - nicht von der checkbox).
Alles klar soweit?
liebe Grüße aus Berlin
lina-
moin Tobias :)
ich habe ca. 30 checkboxen in einer reihe gesetzt. hinter jeder chechbox steckt eine verfügbarkeit. jetzt möchte ich vor diese reihe ein textfeld schalten, bei dem nach eingabe einer zahl (z.b. 3) alle checkboxen bei denen die verfügbarkeit kleiner als 3 ist mit einem bild ( zum signalisieren dass nichts verfügbar ist ) ersetzt werden.
Wie kann man das am besten realisieren?
Hier ein beispielhafter codeschnipsel mit einer checkbox:
<input type="checkbox" name="<? echo $day; ?>" value="...">
jetzt das versteckte feld in dem bei value die verfügbarkeit gesetzt ist:
<input type="hidden" name="<? echo $day; ?>" value="3">
1.musst du natürlich den Wert auslesen, der in das Textfeld geschrieben wurde.
2. prüfst du ob dort eine Zahl eingegeben wurde.
3. Gehst du alle Elemente deiner Form mit einer For-Schleife durch.
4. Prüfst du in der Schleife, ob es sich beim aktuellen Element um ein Hidden-Field handelt
5. Wenn das der Fall ist, ermittelst du deinen Wert daraus und entscheidest ob die Checkbox, die sicherlich vor dem hidden field sitzt, ersetzt werden soll (Achtung! Hier vom [parent ausgehen - nicht von der checkbox).Alles klar soweit?
liebe Grüße aus Berlin
lina-
Hallo,
ich habe jetzt folgendes script beispielhaft geschrieben:
<SCRIPT LANGUAGE="JavaScript">
function check_checkboxen(){
var zahl = document.blubb.zahl.value;
if (isNaN(zahl)) {
alert(zahl + " ist keine Zahl!");
}else{
for (var i = 1; i <= document.getElementsByName("verf").length; ++i) {
var frei = document.getElementsByName("verf")[i](http://de.selfhtml.org/javascript/objekte/node.htm#parent_node).value;
document.blubb.statusmeldung.value = frei;
var prev_node = document.getElementsByName("verf")[i].previousSibling.nodeName;
}
}
return(true);
}
</SCRIPT>
</head><body>
<form name="blubb" action="">
<br><br>
Bitte einen Wert eingeben
<input type="text" name="zahl" value="0" onkeypress="return check_checkboxen()">
<br><br>
<textarea name="statusmeldung"></textarea>
<br>
<input type="checkbox" name="1" value="1">
<input type="hidden" name="verf" value="1">
<br>
<input type="checkbox" name="2" value="2">
<input type="hidden" name="verf" value="2">
<br>
<input type="checkbox" name="3" value="3">
<input type="hidden" name="verf" value="3">
<br>
<input type="checkbox" name="4" value="4">
<input type="hidden" name="verf" value="4">
</form>
</body>
</html>
wie kann ich jetzt die checkbox mit z.B. einem Bild ersetzen?
gruß,
tobias
moin Tobias :)
wie kann ich jetzt die checkbox mit z.B. einem Bild ersetzen?
Wie man einen Parent-Knoten ermittelt habe ich dir ja schon mit einem Link gesagt.
Ebenso weisst du schon, wie man in einem Knoten ein Kind ersetzt.
Was du jetzt noch wissen musst ist, wie man ein Element (dein Bild) erstellt. Hierbei hilft dir createElement.
Wenn du dein Bild erstellt hast, musst du nur noch das Attribut "src" vergeben.
Das sieht dann ungefähr so aus:
var img =document.createElement("img");
img.src="img/logo.gif";
Das sollte erstmal reichen, um dich weiterzubringen :) Wenn noch Probleme auftreten, frag ruhig nochmal nach! Ich helfe dir dann gerne weiter (möchte dir jetzt ungern den fertigen Code geben).
Einen Hinweis hätte ich noch: previousSibling beinhaltet beim FF auch #text-nodes (die beim Zeilenumbruch entstehen). Du möchtest aber "checkbox"-nodes haben ;)
Langer Rede kurzer Sinn: du musst zweimal previousSibling angeben.
liebe Grüße aus Berlin
lina-
moin Tobias :)
wie kann ich jetzt die checkbox mit z.B. einem Bild ersetzen?
Wie man einen Parent-Knoten ermittelt habe ich dir ja schon mit einem Link gesagt.
Ebenso weisst du schon, wie man in einem Knoten ein Kind ersetzt.Was du jetzt noch wissen musst ist, wie man ein Element (dein Bild) erstellt. Hierbei hilft dir createElement.
Wenn du dein Bild erstellt hast, musst du nur noch das Attribut "src" vergeben.
Das sieht dann ungefähr so aus:
var img =document.createElement("img");
img.src="img/logo.gif";
>
>
> Das sollte erstmal reichen, um dich weiterzubringen :) Wenn noch Probleme auftreten, frag ruhig nochmal nach! Ich helfe dir dann gerne weiter (möchte dir jetzt ungern den fertigen Code geben).
> Einen Hinweis hätte ich noch: previousSibling beinhaltet beim FF auch #text-nodes (die beim Zeilenumbruch entstehen). Du möchtest aber "checkbox"-nodes haben ;)
> Langer Rede kurzer Sinn: du musst zweimal previousSibling angeben.
>
> liebe Grüße aus Berlin
> lina-
hey lina,
sorry, aber ich komm grad absolut net weiter...:(
wie funzt das mit den knoten wenn ich gar keine liste,... habe.
ich hab so gut wie nie was mit js zu tun. könntes du mir vielleicht das script vervollständigen, damit ich das ganze mal richtig nachvollziehen kann? würde mich sehr freuen...
übrigens danke für deine bisherige hilfe!
gruß,
tobias
Hab jetzt ne andere Lösung gefunden:
<SCRIPT LANGUAGE="JavaScript">
function check_checkboxen(){
var zahl = document.blubb.zahl.value;
if (isNaN(zahl)) {
alert(zahl + " ist keine Zahl!");
}else{
for (var i = 0; i < document.getElementsByName("verf").length; ++i) {
var frei = document.getElementsByName("verf")[i].value;
document.getElementById("div_id_"+i).innerHTML = "<img src='bilder/kreuz.gif' border=0>";
document.blubb.statusmeldung.value += i +"\n";
}
}
return(true);
}
</SCRIPT>
was hältst davon?
moin Tobias :)
<SCRIPT LANGUAGE="JavaScript">
Das ist immer noch nicht in Ordnung
Ansonsten funktioniert deine Lösung natürlich auch ;) Ich persönlich habe nur eine Abneigung gegen innerHTML.
liebe Grüße aus Berlin
lina-
ich habe jetzt folgendes script beispielhaft geschrieben:
<SCRIPT LANGUAGE="JavaScript">
das language Attribut ist nicht mehr erwünscht, dafür fehlt aber das type Attribut.
function check_checkboxen(){
var zahl = document.blubb.zahl.value;
if (isNaN(zahl)) {
alert(zahl + " ist keine Zahl!");
}else{
for (var i = 1; i <= document.getElementsByName("verf").length; ++i) {
var frei = document.getElementsByName("verf")[i].value;
document.blubb.statusmeldung.value = frei;
var prev_node = document.getElementsByName("verf")[i].previousSibling.nodeName;}
}
return(true);
}
Das ist aber arg kompliziert. Du solltest mit der Zählung des Index bei null anfangen, Arrays in fast allen Programmiersprachen fangen bei null an.
Ausserdem kannst du der Funktion bereits die Formularreferenz übergeben:
<form action="">
<br><br>Bitte einen Wert eingeben
<input type="text" name="zahl" value="0" onkeypress="return check_checkboxen(this.form)">
<br><br>
<textarea name="statusmeldung"></textarea>
<br>
<input type="checkbox" name="0" value="0">
<input type="hidden" name="verf" value="0">
<br>
<input type="checkbox" name="1" value="1">
<input type="hidden" name="verf" value="1">
<br>
<input type="checkbox" name="2" value="2">
<input type="hidden" name="verf" value="2">
<br>
<input type="checkbox" name="3" value="3">
<input type="hidden" name="verf" value="3">
<br>
<input type="checkbox" name="4" value="4">
<input type="hidden" name="verf" value="4">
</form>
Das JS:
<script type="text/javascript">
function check_checkboxen(form)
{
var zahl = form.zahl.value;
if (isNaN(zahl)) alert(zahl + " ist keine Zahl!");
else
{
for (var i = 0; i < form.elements['verf'].length; ++i)
{
var frei = form.elements['verf'][i].value;
form.statusmeldung.value = frei;
var prev_node = form.elements['verf'][i-1].name;
}
}
return true;
}
wie kann ich jetzt die checkbox mit z.B. einem Bild ersetzen?
Kommt drauf an was du damit machen willst?
Struppi.