PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eckige Klammer in Variablenname bei JS machbar ?



AndreasMeier
30-09-2010, 07:58
Hallo zusammen,

hab folgendes Problem:
Ich habe mehrere Eingabefelder auf einer PHP-Webseite, in denen ich jeweils die Zeichen zählen möchte.
Die Felder haben die Bezeichnung "beschreibung[1]", "beschreibung[2]" etc..

Die Zeichen-zähl-Funktion hab ich hier (http://www.perlunity.de/javascript/scripts/javascript_0176_main.shtml) gefunden.

Mein Problem sind aber die Feldbezeichnungen mit der eckigen Klammer.
Damit kommt die JS-Funktion nicht klar.
Beispiel-Zeile vom (nicht-funktionierenden) Code:


if (window.document.zeige.beschreibung[1].value.length>10)


Ich hab die Funktion getestet. Sie funktioniert, wenn ich die eckigen Klammern aus dem Namen durch Unterstriche ersetze.
Dann aber hab ich das Problem, dass die Webseite die eingegebenen Daten nicht mehr in die Datenbank speichern kann, weil alle weiteren Funktionen der Webseite auf der Feldbezeichnung (mit eckigen Klammern) beruhen.

Ich hoffe, ich konnte mein Problem einigermaßen rüberbringen.

Gibt es eine Möglichkeit, wie ich das lösen kann, ohne auf die eckigen Klammern verzichten zu müssen ?

Danke und Gruß
Andreas

msi
30-09-2010, 09:39
Hallo zusammen,

hab folgendes Problem:
Ich habe mehrere Eingabefelder auf einer PHP-Webseite, in denen ich jeweils die Zeichen zählen möchte.
Die Felder haben die Bezeichnung "beschreibung[1]", "beschreibung[2]" etc..

Die Zeichen-zähl-Funktion hab ich hier (http://www.perlunity.de/javascript/scripts/javascript_0176_main.shtml) gefunden.

Mein Problem sind aber die Feldbezeichnungen mit der eckigen Klammer.
Damit kommt die JS-Funktion nicht klar.
Beispiel-Zeile vom (nicht-funktionierenden) Code:


if (window.document.zeige.beschreibung[1].value.length>10)


Ich hab die Funktion getestet. Sie funktioniert, wenn ich die eckigen Klammern aus dem Namen durch Unterstriche ersetze.
Dann aber hab ich das Problem, dass die Webseite die eingegebenen Daten nicht mehr in die Datenbank speichern kann, weil alle weiteren Funktionen der Webseite auf der Feldbezeichnung (mit eckigen Klammern) beruhen.

Ich hoffe, ich konnte mein Problem einigermaßen rüberbringen.

Gibt es eine Möglichkeit, wie ich das lösen kann, ohne auf die eckigen Klammern verzichten zu müssen ?

Danke und Gruß
Andreas


konter den javascript interpreter doch einfach ebenfalls mit eckigen klammern


if (window.document.zeige["beschreibung[1]"].value.length>10)

undefined
30-09-2010, 13:54
Mit einer Schleife auf die Elemente.


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>From Undefined</title>
<meta name="GENERATOR" content="Quanta Plus" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="cache-control" content="no-cache" />
<style type="text/css">
/* <![CDATA[ */
input { display: block; }
/* ]]> */
</style>
<script type="text/javascript">
/* <![CDATA[ */
function checkInput()
{
var pattern = new RegExp(/\bbeschreibung\[\d\]/);
var nodes = document.getElementsByTagName('input');
for( var i in nodes )
{
if ( ! pattern.test( nodes[i].name ) )
continue;

if ( nodes[i].value.length < 10 )
{
nodes[i].style.background='red';
return false;
}
}
return true;
}
/* ]]> */
</script>
</head>
<body>
<div class="main">
<form action="#" method="post" onSubmit="return checkInput();">
<input type="text" name="beschreibung[1]" value="a" />
<input type="text" name="beschreibung[2]" value="b" />
<input type="text" name="beschreibung[3]" value="b" />
<input type="text" name="beschreibung[4]" value="c" />
<input type="text" name="beschreibung[5]" value="d" />
<input type="text" name="beschreibung[6]" value="e" />
<input type="text" name="beschreibung[7]" value="f" />
<input type="text" name="beschreibung[8]" value="g" />
<input type="submit" />
</form>
</div>
</body>
</html>

AndreasMeier
30-09-2010, 21:32
Ich werd's zwar erst morgen ausprobieren können, aber eure Lösungen schaun auf den ersten Blick äußerst interessant aus, herzlichen Dank dafür !
Ich werde berichten.

BlueJay
14-10-2010, 11:14
Hallo Leute, nicht so umständlich!


Wie wäre es hiermit?

<html>
<head>
<script type="text/javascript">

function mach_hinne()
{ var i,krempel,t='';
for (i=1; i<9; i++)
{ krempel='beschreibung['+i+']';
with(document.form1.elements[krempel]) t=t+value.length+'\n';
}
alert(t);
return false;
}




</script>
</head>
<body>
<form name="form1" action="#" method="post" onSubmit="return mach_hinne();">
<input type="text" name="beschreibung[1]" value="assssss">
<input type="text" name="beschreibung[2]" value="bddddddd">
<input type="text" name="beschreibung[3]" value="bvvvvvvvvvv">
<input type="text" name="beschreibung[4]" value="cv">
<input type="text" name="beschreibung[5]" value="drrr">
<input type="text" name="beschreibung[6]" value="eaaaaa">
<input type="text" name="beschreibung[7]" value="fxxxxxxxxxx">
<input type="text" name="beschreibung[8]" value="gxxx">
<input type="submit">
</form>

</body>
</html>


Gruß,
Ulrike