Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP ja JavaScript-ongelma

Sivun loppuun

Lemtz81 [10.10.2006 11:19:14]

#

Olen tekemässä formia ja formissa on raksiruutuun vaihtoehtoja, tekasin siihen myös javascripti homman jolla voi valita kaikki tai poistaa kaikki valinnat
formissa valinnat on:

<input type="checkbox" name="activities[]" value="Lenkkeily"><input type="checkbox" name="activities[]" value="Pyoraily"><input type="checkbox" name="activities[]" value="Uinti">

ja javascripti on

function selectAllGroup(NewValue)
{
  for (var i=0;i<document.testi.activities.length;i++)
  {
    var e = document.testi.activities[i];
        e.checked = NewValue;
  }
}

JS pelittää jos inputin nimen perästä otan pois [ ] - sulkeet, mutta sitten kun postaan homman niin se ei kerää valittuja tietoja , vaan pelkäskään viimeisen valinnan.

Ehotuksia ?

Lebe80 [10.10.2006 12:50:16]

#

Tarkista homma vielä varmuuden vuoksi debuggaamalla "lomakkeen tarkistus" sivulla esim. echo implode(",",$_POST["activities"]);
Eli tuo $_POST["activities"] on taulukkomuodossa, kun olet sen edellisessä formissa taulukoksi määrittänyt.

Lemtz81 [10.10.2006 13:02:12]

#

Juu, olen tarkistanu tuon aikasemmin.
eli

foreach($_POST['activities'] as $harrastus) echo $harrastus;

tämä toimii kun olen laittanu activities taulukko muodossa mutta js ei, ja kun määritän activities ei taulukko muodossa niin silloin pelittää js.

onko tähän ratkaisuja kellään ??

siirappi [10.10.2006 13:17:24]

#

Anna vaikka formille id:

<form ... id="lomake">

Sitten käyt läpi kaikki lomakkeen kentät:

lomake = document.getElementById("lomake");
for (i = 0; i < lomake.elements.length; i++) {
  lomake.elements[i].checked = arvo;
}

Ja tietty kannattaa pistää vielä tarkistus, onko elementti edes checkbox.

Olga [10.10.2006 20:16:38]

#

Tai sitten annat kaikille checkboxeille saman class-määreen, käyttöön mainio Prototype-framework ja homma käy helposti:

document.getElementsByClassName('omaClass', 'lomakkeenId').each(function (item) {
    item.checked = true;
});

tsuriga [10.10.2006 20:32:14]

#

Muistaiskohan joku sellaisen sivuston osoitetta, jolla ehdotetaan, että tuota Prototypeä ei kannattaisi käyttää? Jos arvata pitäisi niin syyksi oli muistaakseni annettu jotakin epästandardisuuteen ja olioihin liittyvää - varmaksi en sano kun muisti reistailee pahasti asian tiimoilta. Joku "10 Best JavaScript Practices" se oli, niitä vaan kun mahtuu 13 tusinaan.

Olga [10.10.2006 20:51:25]

#

Itsekin olen nähnyt aika monta vastalausetta Prototypeä ja muita vastaavia kirjastoja vastaan, mutta myös vastaavasti yhtä monta ja vielä enemmän puolesta. Omaa työskentelyäni Prototype on nopeuttanut todella paljon ja koodirivienkin määrä on tippunut valtavasti. Prototype itsessään on varsin kookas (tuorein versio taitaa olla yli 60 kilotavua), mutta pakkaamalla sen saa alle kymmeneen.

Suurilla tietomäärillä Prototypen $$-operaattori on tiedettävästi erittäin hidas, mutta siihenkin on tehty kolmannen osapuolen parannuksia, ja myös muita lisäkirjastoja löytyy Prototypen parantamiseen ja sen puutteiden paikkaamiseen (tänään luin muistaaksen sellaisesta kuin LowPro, täytyy myöhemmin tutustua tarkemmin). Itse teen parhaillaan varsin kookasta softaa, jonka käyttöliittymä lukuisine ominaisuuksineen on kokonaan tehty JavaScriptin avulla ja XmlHttp-kutsuja käytetään sisällön päivittämiseen. Toki taustalla hyrrää PHP, mutta JavaScript-rivien lukumäärä lähenee varmaankin jo kymmentä tuhatta, ellei ole jo ylikin. Ilman Prototypeä (ja Scriptaculous:ta) olisin varmasti tullut jo hulluksi. Ja tosiaan noiden kahden kirjaston käyttöönoton jälkeen koodirivien määrä tippui lähes puoleen. Elementtien luontiin Scriptaculouksen Builder on lyömätön (innerHTML:äähän ei tueta! :)). Tai no ei lyömätön, löytyyhän noita vielä vinkeämpiä muistakin kirjastoista, mutta kuitenkin.

Mutta mielelläni kuulen kyllä painavaa sanaa myös Prototypeä vastaan. Jos siitä löytyy jokin todella käyttökelvoton osatekijä, voi sen tietysti toteuttaa "manuaalisesti" :) Mutta näillä sanoilla kehoitan muitakin JS-koodareita tutustumaan vastaaviin kirjastoihin, onhan noita nykyään jo varsin monta erilaista. Pikaisesti mieleen tulee ainakin jo mainitut Prototype ja Scriptaculous, sekä JSQuery, Mochikit, Moo.fx ja Dojo.

Olga [11.10.2006 08:33:29]

#

Ja korjataan nyt viestiä sen verran että $$ on tietenkin funktio, ja tuo yksi kirjasto on jQuery eikä suinkaan JSQuery :)

siirappi [17.10.2006 11:32:49]

#

Ajattelin nyt vielä lisätä tämän tänne kun iski silmään php.nettiä selatessa:

lainaus:

Note that if you are using JavaScript the [] on the element name might cause you problems when you try to refer to the element by name. Use it's numerical form element ID instead, or enclose the variable name in single quotes and use that as the index to the elements array, for example:

variable = documents.forms[0].elements['var[]'];

https://www.php.net/manual/fi/faq.html.php

Lemtz81 [24.10.2006 12:58:59]

#

Jautsi jau

Kiitos paljo vastauksista...mukavasti tuli tietoa.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta