Zur Navigation

Wert eines <input> auslesen dann Checkbox anhaken

1 Kalle (Gast)

Hallo, ich schon wieder.

Ist es möglich bei "onload" den Wert/die Werte innerhalb eines input-Feldes auszulesen und dann entsprechende Checkboxen anzuhaken?

Ich habe 8 Checkboxen. Im input-Feld können zwischen 0 und 8 Werten stehen, zu jedem Wert gibt es eine Checkbox. Diese müssen nun angehakt werden, wenn der entsprechende Value im input steht. Die Werte im input haben keine bestimmte Reihenfolge.

Geht das?

16.03.2012 08:59

2 Jörg Kruse

In etwa so würde ich es probieren:

var checkboxIndex = document.NameDesInputs.value;
document.NameDesFormulars.NameDerCheckboxen[checkboxIndex].checked = true;

(das ganze in eine Funktion, die du bei onload lädst)

16.03.2012 09:31 | geändert: 16.03.2012 09:33

3 Kalle (Gast)

Ok,
ich krieg's nicht hin.
Die Sache mit "Index" ist mir leider neu.
Bisher spreche ich alle Elemente direkt an.

Würdest du mir bitte das in folgenden Code einbauen?:

<html>
<head>
<script type="text/javascript">
function test () {

}
</script>
</head>
<body onload="test()">

<form name="testform" action="">
	<input type="checkbox" id="haken_1" value="eins"> eins<br>
	<input type="checkbox" id="haken_2" value="zwei"> zwei<br>
	<input type="text" id="feld1" size="50"></input>
</form>


</body> 
</html>

16.03.2012 09:46

4 Jörg Kruse

Ein name Attribut haben deine Checkboxen nicht?

Du kannst die Elemente natürlich auch über deren IDs ansprechen, wenn vorhanden

function test () {
    var checkboxNumber = document.getElementById("feld1").value;
    document.getElementById("haken_" + checkboxNumber).checked = true;
}

16.03.2012 10:38

5 Kalle (Gast)

Hallo,

ich konnte dein Bespiel umsetzen, allerdings hast du meinen Wunsch wohl falsch verstanden.

Deshalb noch einmal ausführlicher mit konkretem Beispiel:

Folgenden Code-Schnippsel habe ich in meiner html-Datei:
<!DOCTYPE html>
<body>
<form name="analyseform" action="">
<table>
<tr>
	<td align="left" valign="top">Analysetyp</td>
	<td>
		<input type="checkbox" id="check01" value="Betriebsmessung, " onclick="analverb()">Betriebsmessung<br>
		<input type="checkbox" id="check02" value="Cdyn, " onclick="analverb()">Cdyn<br>
		<input type="checkbox" id="check03" value="Cdyn LSE, " onclick="analverb()">Cdyn LSE<br>
		<input type="checkbox" id="check04" value="Durchschallung, " onclick="analverb()">Durchschallung<br>
		<input type="checkbox" id="check05" value="FRFs, " onclick="analverb()">FRFs<br>
		<input type="checkbox" id="check06" value="Kohaerenzanalyse, " onclick="analverb()">Kohärenzanalyse
	</td>
	<td>
		<input type="checkbox" id="check07" value="Lagerkennlinien, " onclick="analverb()">Lagerkennlinien<br>
		<input type="checkbox" id="check08" value="LSE, " onclick="analverb()">LSE<br>
		<input type="checkbox" id="check09" value="Luftschall, " onclick="analverb()">Luftschall<br>
		<input type="checkbox" id="check10" value="Modalanalyse, " onclick="analverb()">Modalanalyse<br>
		<input type="checkbox" id="check11" value="TPA" onclick="analverb()">TPA<br>
	</td>
</tr>
<tr>
	<td></td>
	<td colspan="2">
		<input type="text" id="feld12" name="analyse" size="64">
	</td>
</tr>
</table>
</form>

</body>
<script type="text/javascript">
function analverb()
{
  var i,Text="";
  for (i=0;i<12;i++)
    if (document.analyseform.elements[i].checked)
      Text=Text+document.analyseform.elements[i].value;
  document.analyseform.analyse.value=Text;
}
function analverb2 () {
  if (document.analyseform.check12.checked == true) {
	analverb ()}
}
</script>

Zum Vorgang:
In unserer Messoftware wird die html-Datei geöffnet.
Meine Mitarbeiter kreuzen die durchzuführenden Analysetypen an, diese werden in das Textfeld übertragen.
Nach Klick auf "Accept Changes" (in der Software) wird der Wert aus dem Textfeld in die Software-Datenbank übernommen.
Wenn man allerdings dann aus der Datenbank heraus in die html-Datei geht, wird der Datenbankwert in das Textfeld wieder zurückübergeben, allerdings sind die Checkboxen nicht angehakt, da diese ja mit der DB an sich nichts zu tun haben.
Nun möchte ich, das beim Öffnen der html-Datei die Werte aus dem Textfeld ausgelesen werden und die entsprechenden Checkboxen angehakt werden.

Ich hatte so etwa folgendes im Kopf:

es wird im Textfeld geschaut ob z.B. das Wort "Durchschallung" vorkommt, wenn ja, wird die Checkbox angehakt.

Ich wollte dir eigentlich nicht so viel Zeit rauben...

16.03.2012 11:42

6 Kalle (Gast)

Man könnte den Eindruck haben, ich kann Javascript, allerdings habe ich mir die Funktion allesamt zusammengesucht, ohne sie wirklich hundertprozentig zu verstehen!

16.03.2012 11:45

7 Kalle (Gast)

oh, und vergiss function analverb2 (),
das hab ich vergessen rauszulöschen

16.03.2012 11:46

8 Jörg Kruse

Meine Mitarbeiter kreuzen die durchzuführenden Analysetypen an, diese werden in das Textfeld übertragen.

Genauer gesagt, werden die Werte aneinandergehängt

Entsprechend müsste der String auch wieder zerlegt werden. Dazu müsste man in einer Schleife mit indexOf() überprüfen, ob der jeweilige Wert in dem String enthalten ist, also in etwa so:

var Text = document.getElementById('feld12').value;
for (i = 0; i < 12; i++) {
    checkbox = document.analyseform.elements[i];
    if (Text.indexOf(checkbox.value) != -1) {
        checkbox.checked = true;
    }
}

Wenn man allerdings dann aus der Datenbank heraus in die html-Datei geht, wird der Datenbankwert in das Textfeld wieder zurückübergeben

Wie geschieht das, über PHP? einfacher wäre es da denke ich, mit PHP die übermittelten Checkboxwerte auszuwerten und die Haken entsprechend zu setzen - dann bräuchte es auch das zusätzliche Input-Feld nicht

16.03.2012 17:21

1 Forenmitglied fand diesen Beitrag gut

9 Kalle

Guten Morgen,
es funktioniert einwandfrei!
Fantastisch wie diese Forum mir bisher helfen konnte, Danke dafür!

Wie geschieht das, über PHP? einfacher wäre es da denke ich, mit PHP die übermittelten Checkboxwerte auszuwerten und die Haken entsprechend zu setzen - dann bräuchte es auch das zusätzliche Input-Feld nicht

Ich gehe davon aus, daß hier nicht PHP verwendet wird. Kann das allerdings auch nicht überprüfen.
Das input-Feld nutze ich, da die Software eben alles was einen Namen hat auslesen kann. Bei mehreren Checkboxen mit dem gleichen Namen wird der letzte Wert übernommen. Eine andere Möglichkeit ist mir da nicht eingefallen.
Gibt es denn ein "output"-Feld, o.ä.?
Die meissten input-Felder haben sowieso type="hidden".

Vielen Dank jedenfalls für die super Hilfe hier.
Frohes Schaffen...

19.03.2012 08:36

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]