Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
JS - Bezeichnerproblem [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
JS - Bezeichnerproblem


 
Sky
11-03-2002, 19:38 
 
Gegeben:

<input type="checkbox" name="blub[]" value="1">
<input type="checkbox" name="blub[]" value="2">

Frage:
Wie greife ich per JS auf eine Checkbox mit diesem Namen zu? Die eckigen Klammern müssen ja sein, damit ich das ganze dann weiterverarbeiten kann... Und die elements[x]-Syntax möchte ich nicht verwenden, weil sie mir zu unflexibel ist...

 
Blaster
11-03-2002, 20:33 
 
Hi,

um Missverständisse vorzubeugen, die Syntax der D.O.M

function chkfkt(){

var wert= document.'formname'.'elementname'.value;
// bzw
var wert= document.form(x).element(y).value;


}
kennst du?!

 
Sky
11-03-2002, 21:01 
 
Hmmm... nein.
Aber:


Syntax error while loading (line 29)
if (document.forms[0].'username'
-----------------------------------^


Oder hab ich dich falsch verstanden...?

 
Blaster
11-03-2002, 21:17 
 
Beispiel:

<form name="testform" ...>
<input type="checkbox" name="blub" value="1" onClick="chkfkt()">

...


var wert = document.testform.blub.value;
// oder
var wert = form.bulb.value;
// oder
for (x=1;x<=10;x++){
if(document.form[0].blub[x].checked){
// mach irgendwas für name="bulb[x]"
}
}

Aber nicht Index-Schreibweise mit Namesspezifikation mischen

[Editiert von Blaster am 11-03-2002 um 22:17]

 
Sky
12-03-2002, 06:31 
 
Aber ich muss die eckigen Klammern doch verwenden, damit ich dann im Formhandler (PHP) das ganze als Array verarbeiten kann.

 
Sky
13-03-2002, 19:01 
 
Hm... keine Chance..?

 
Titus
13-03-2002, 21:52 
 
Ja, mußt Du. Aber mann kommt trotzdem dran, ohne die genaue Position zu wissen; Du mußt einfach nur danach suchen.
Um den Aufwand dabei zu verringern, gat das Objeckt document seit im IE und NN seit Version 6 die Methode getElementsByName (http://selfhtml.teamone.de/javascript/objekte/document.htm#get_elements_by_name).

In älteren Browsern kannst du Dir mit folgender Funktion behelfen. Die listet nur alle Checkboxen mit dem Namen und dem Status (checked oder nicht) auf; anpassen an deine Bedürfnisse mußt du selbst:
[code]
function ListCheckboxes(formname, checkname)
{
var s = formname+'.'+checkname+':';
ar = eval ('document.'+formname+'.elements);
for (i=0; i<ar.length; i++)
{
el = ar[i];
if (el.name==checkname)
s += '\n'+(el.checked ? 'x ':'o ')+el.value;
}
alert (s);
}

 
Sky
14-03-2002, 12:18 
 
Dann nehme ich letzteres :)

Danke vielmals!

 
Sky
14-03-2002, 12:40 
 
Was dabei heraus gekommen ist, falls es jemanden interessiert:

function ListCheckboxes(formname, checkname)
{
atleast_one_checked = false;
ar = eval('document.'+formname+'.elements');
for (i=0; i<ar.length; i++)
{
el = ar[i];
if (el.name==checkname) {
if (el.checked) atleast_one_checked = true;
}
}
if (atleast_one_checked) {
return true;
} else {
return false;
}
}

 
wahsaga
14-03-2002, 13:46 
 
und als letztes i-tüpfelchen würde ich noch folgende änderung vorschlagen:

function ListCheckboxes(formname, checkname)
{
atleast_one_checked = false;
ar = eval('document.'+formname+'.elements');
for (i=0; i<ar.length; i++)
{
el = ar[ i ];
if (el.name==checkname) {
if (el.checked)
{
atleast_one_checked = true;
break;
}
}
}
if (atleast_one_checked) {
return true;
} else {
return false;
}
}

damit wird deine schleife dann beendet, sobald ein gechecktes feld gefunden wurde.
bringt bei der menge an formularfeldern die man im normalfall so hat einen irren performance-gewinn ;-)

[Editiert von wahsaga am 14-03-2002 um 13:49]


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:52 Uhr.