Überprüfung, ob alle checkboxes an sind
Aerusque
- javascript
Ich habe folgendes Problem:
Es gibt eine Menge "n" an checkboxes, die nicht fest definiert ist, da sie mit Daten aus einer MySql-Datenbank zusammenspielt.
Die checkboxes haben folgende Form:
<input type="checkbox" name="names[]" id='".$percent."'>
Ich suche eine Möglichkeit in einem Formular zu überprüfen, ob alle checkboxes angecklickt worden sind, und abhängig davon, dann weitere Funktionen auszuführen
Vielen Dank
aerusque
Ich habe folgendes Problem:
Es gibt eine Menge "n" an checkboxes, die nicht fest definiert ist, da sie mit Daten aus einer MySql-Datenbank zusammenspielt.
Die checkboxes haben folgende Form:
<input type="checkbox" name="names[]" id='".$percent."'>Ich suche eine Möglichkeit in einem Formular zu überprüfen, ob alle checkboxes angecklickt worden sind, und abhängig davon, dann weitere Funktionen auszuführen
<?
echo "<form action=?action=check method=post>";
echo "<input type=checkbox name=NEWtext>";
echo "<input type=submit value=prüfe checkbox></form>";
echo "<br>";
if($action == check) {
if ($NEWtext == "on")
$checked = 'checked';
echo "Checkbox ist <input type=checkbox name=NEWtext $checked>";
}
?>
Vielen Dank für die schnelle Antwort. Ich suche aber nach einer reinen Javascriptlösung
mfg
Ich habe folgendes Problem:
Es gibt eine Menge "n" an checkboxes, die nicht fest definiert ist, da sie mit Daten aus einer MySql-Datenbank zusammenspielt.
Die checkboxes haben folgende Form:
<input type="checkbox" name="names[]" id='".$percent."'>Ich suche eine Möglichkeit in einem Formular zu überprüfen, ob alle checkboxes angecklickt worden sind, und abhängig davon, dann weitere Funktionen auszuführen
<?
echo "<form action=?action=check method=post>";
echo "<input type=checkbox name=NEWtext>";
echo "<input type=submit value=prüfe checkbox></form>";
echo "<br>";if($action == check) {
if ($NEWtext == "on")
$checked = 'checked';
echo "Checkbox ist <input type=checkbox name=NEWtext $checked>";
}
?>
Vielen Dank für die schnelle Antwort. Ich suche aber nach einer reinen Javascriptlösung
mfg
Ich habe folgendes Problem:
Es gibt eine Menge "n" an checkboxes, die nicht fest definiert ist, da sie mit Daten aus einer MySql-Datenbank zusammenspielt.
Die checkboxes haben folgende Form:
<input type="checkbox" name="names[]" id='".$percent."'>Ich suche eine Möglichkeit in einem Formular zu überprüfen, ob alle checkboxes angecklickt worden sind, und abhängig davon, dann weitere Funktionen auszuführen
function check(checkbox)
{
var klick = true;
var zutaten = "";
for(i = 0; i < checkbox.length; i++)
{
if(checkbox.check1[i].checked == klick)
{
if(zutaten == "")
{
zutaten = zutaten + checkbox.check1[i].value + " & ";
}
else
{
zutaten = zutaten + checkbox.check1[i].value + " & ";
}
}
if(checkbox.check1[0].checked == false && checkbox.check1[1].checked == false && checkbox.check1[2].checked == false)
{
alert("Soll nichts auf die Pizza?");
return false;
}
}
var endzutat = zutaten.slice(0, -2);
alert(endzutat);
}
hmm, das scheint bei mir nicht zu funktionieren. Ich poste Mal, das was ich habe. Die Funktion check() soll nun feststellen, ob alle checkboxes an sind. Falls nicht sollte setText(0) gesetzt werden. Falls ja setText(100).
Vielen Dank in Voraus
<html>
<head>
<script type="text/javascript">
function absZahl() {
prozent = document.config.total.value;
kontingent = 1000;
preis = 4;
discount = preis-(preis*0.1);
menge = kontingent * (prozent/100);
if (prozent == 100){
preis = (menge*discount)/kontingent;}
else if(prozent >= 80){
preis = preis;
}
else if(prozent <= 80){
preis = preis*80/prozent;
preis = Math.round(preis) * 1;
}
document.config.gesamtpreis.value=preis;
}
function ShowTotal() {
document.config.total.value = '';
elem = document.config.elements;
var sum = 0;
for (i=0;i<elem.length;i++) {
if (elem[i].checked)
{
sum = sum + parseInt(elem[i].value);
}
}
document.config.total.value = sum;
}
function setText(newtext)
{
document.config.total.value=newtext;
}
function CheckAll()
{
var ml = document.config;
var len = ml.elements.length;
for (var i = 0; i < len; i++) {
var e = ml.elements[i];
if (e.name == "sizes[]") {
e.checked = true;
document.totr=100;
}
}
}
/*Diese Funktion überprüft, ob zumindest eines der checkboxes nicht angewählt ist und macht den settext entsprechend*/
function check()
{
var checkbox = document.config.elements;
var klick = true;
for(i = 0; i < checkbox.length; i++)
{
if(checkbox.checked == klick)
{
setText(100);
}
else {setText(0);}
}
}
function unCheckAll()
{
var ml = document.config;
var len = ml.elements.length;
for (var i = 0; i < len; i++) {
var e = ml.elements[i];
if (e.name == "sizes[]") {
e.checked = false;
}
}
}
</script>
</head>
<body onLoad="javascript:ShowTotal();javascript:CheckAll();javascript:setText(100);javascript:absZahl();javascript:check()">
<form name="config" action="">
<input class="checkbox" type="checkbox" name="sizes[]" value="4" onclick="ShowTotal();absZahl();check();" />5
<input class="checkbox" type="checkbox" name="sizes[]" value="5" onclick="ShowTotal();absZahl();check();" />5
<input class="checkbox" type="checkbox" name="sizes[]" value="10" onclick="ShowTotal();absZahl();check();" />10
<input class="checkbox" type="checkbox" name="sizes[]" value="20" onclick="ShowTotal();absZahl();check();" />20
<input class="checkbox" type="checkbox" name="sizes[]" value="5" onclick="ShowTotal();absZahl();check();" />5
<input class="checkbox" type="checkbox" name="sizes[]" value="10" onclick="ShowTotal();absZahl();check();" />10
<input class="checkbox" type="checkbox" name="sizes[]" value="10" onclick="ShowTotal();absZahl();check();" />10
<input class="checkbox" type="checkbox" name="sizes[]" value="20" onclick="ShowTotal();absZahl();check();" />20
<input class="checkbox" type="checkbox" name="sizes[]" value="5" onclick="ShowTotal();absZahl();check();" />5
<input class="checkbox" type="checkbox" name="sizes[]" value="10" onclick="ShowTotal();absZahl();check();" />10<br />
Insgesamt:
<input name="total" type="text" id="total" size="3" />
%
<hr />
<a href="javascript:CheckAll();javascript:setText('100');javascript:absZahl();">Alle wählen</a><br /> <a href="javascript:unCheckAll();javascript:setText('0');javascript:absZahl();">Alle entfernen</a><hr /> Aktueller Preis: <input name="gesamtpreis" type="text" id="gesamtpreis" size="2" />,-€<hr />
</form>
</body>
</html>
gruss aerusque,
Ich suche eine Möglichkeit in einem Formular zu überprüfen, ob alle
checkboxes angeklickt worden sind, um abhängig davon dann weitere
Funktionen auszuführen.
Deine problemstellung schreit foermlich dannach, mit dem statischen
[[Array]]-iterator [filter] sowie dem [[Array]]-iterator [every]
erschlagen zu werden:
~~~javascript
var inputList = document.forms["formNameOrId"].getElementsByTagName("input");
var isEvery = Array.filter(inputList, (function (elm/, idx, arr/) {
return (elm.type == "checkbox");
})).every(function (elm/, idx, arr/) {
return elm.checked;
});
if (isEvery) {
// whatsoever
} else {
// everything else
}
als eine einzige kompakt formulierte bedingung kaeme dass dann so daher:
~~~javascript
if (Array.filter(document.forms["formNameOrId"].getElementsByTagName("input"), (function (elm/*, idx, arr*/) {
return (elm.type == "checkbox");
})).every(function (elm/*, idx, arr*/) {
return elm.checked;
})) {
// whatsoever
} else {
// everything else
}
zur info: array-iteratoren wurden mit JavaScript 1.6 durch mozilla.org eingefuehrt.
mittlerweile gibt es einige gute implementierungen, die dieses schoene, schnelle
und ausdrucksstarke programmierkonzept in allen javascriptfaehigen browsern
ermoeglicht - ich habe mich ebenfalls an einer solchen versucht:
jsApi.Array.mozExtensions.dev.js
jsApi.Array.mozExtensions.js
jsApi.Array.mozGenerics.dev.js
jsApi.Array.mozGenerics.js
so long - peterS. - pseliger@gmx.net