Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Js checkboxin tyhjennys

Sivun loppuun

pistemies [28.12.2011 13:38:32]

#

Olen tekemässä jonkinlaista lomaketta, jossa käyttäjä voi avata checkboxin avulla jonkin lomakkeen kentän muokattavaksi. Homma tapahtuu siten että kun ruksaa jonkin checkboxin, lomakkeen teksti-kenttä tulee sen alle. Jos jostakin syystä haluaa perua homman, tekstikentän voi piilottaa painamalla Esc. Checkbox-ruutu jää tässä tapauksessa valituksi... miten sen valinnan saisi poistettua?

Minulla on nyt toistaiseksi tällä tavalla, koska kaikki muu tuossa document-jutussa ei toimi eli pysäyttää ohjelman ajon. Tuo string asettaa tässä pelkkää tyhjää innerHTML-tietoon poistaessaan siitä lomakekentän.

  if(tieto == 'esc'){
     string = "";
     document.muutos.nimi = null;
   }

Ps. Tällaisen homman olen tehnyt hiukan helpottamaan lomakkeen käyttöä. Sivulla kävijällä voi olla jossakin vain yksi tai kaksi tietoa, joita tarvitsee päivittää. Siksi ei kannata aukaista kaikkia lomakekenttiä, vaan ainoastaan ne, joiden tietoja haluaa muuuttaa.

Mod. huom: Kappalejako on kaksi rivinvaihtoa.

Metabolix [28.12.2011 14:48:40]

#

pistemies kirjoitti:

document.muutos.nimi = null;

Mitähän ihmettä luulet tässä tekeväsi? Tarkoititko ehkä document.muutos.nimi.checked = false?

Kysymyksestäsi saisi paremmin selvää, jos kertoisit kenttien nimet. Nyt ei voi mistään tietää, oliko tämä document.muutos.nimi tekstikenttä vai valintaruutu.

pistemies [28.12.2011 15:10:54]

#

Tuossa tuo muutos on lomakkeen nimi ja nimi on muuttujassa tuleva checkbox-kentän nimi. Ne tulostuu oikein alert-testissä. Pitäisi siis saada valinta siitä poistettua silloin kun tyhjentää sen alla olevan div-elementin painamalla Esc. Tuo checked voi olla juuri se mitä etsin....

Ps. Ei vaikuta tähän tuo document.muutos.nimi.checked = false.

Pete2 [28.12.2011 15:51:38]

#

Miten checkbox-kentän nimi lähetetään muuttujassa? Jos lähetät kentän funktiolle ( esimerkiksi f( document.muutos.nimi ) ) jo jossain muualla muuttujana, käytät totta kai pelkästään muuttujaa tässä kohtaa. Vai onko nimi muttuja arvolla "nimi"?

pistemies [28.12.2011 15:57:46]

#

Checkboxissa syötetään funktiolle checkboxin name-atribuutti, joka on tietysti jokaisessa checkboxissa eri.

Pete2 [28.12.2011 16:03:16]

#

Kuulostaa hyvältä, näytä koko koodi.

pistemies [28.12.2011 16:28:51]

#

Enste kuiten, miten on, tartteeko lomakkeen nimeä syöttää erikseen funktiolle, vai riittääkö tuo lausahdus document.muutos...?

pistemies [28.12.2011 16:55:39]

#

Tässä tämä javascript-osuus. Lisäsin siihen tuon lomakkeen nimen.
Outo homma, tulostaa tuon lomakkeen nimen "muutos" tuossa ylempänä, mutta tuo rivi document.lomake... valittaa että lomake is undefined. Tällä hetkellä lomake on määritelty form id="muutos", siinä oli enste name, mutta ei toiminut silläkää.

function linkinMuutos(pmid,lomake,nimi,esc) {
   var str;
   var string;

   if(nimi == 'muutaUrl'){
   string = 'Kirjoita uusi url-tieto: <input type="text" name="uUrl" size="35"/> (Peru:Paina Esc)';
   }
    if(nimi == 'muutaOtsikko'){
    string = 'Kirjoita uusi otsikko: <input type="text" name="uTitle" size="35"/> (Peru:Paina Esc)';
   }
    if(nimi == 'muutaKuvaus'){
    string = 'Kirjoita uusi kuvaus: <textarea name="uKuvaus" cols="75" rows="4"></textarea> (Peru:Paina Esc)';
   }

    if(nimi == 'muutaHakusanat'){
      string = 'Kirjoita hakusanat: <input type="text" name="uKeywords" size="35"/> (Peru:Paina Esc)';
   }

   if(esc){
     string = "";
      document.getElementById(esc).checked=false;
   }
   if (str=="") {
        document.getElementById(pmid).innerHTML="";
        return;
   }

     document.getElementById(pmid).innerHTML= string;
}

Ps. Tuo lomake tulostuu vain $_POST-muuttujassa. Vaikuttaako se asiaan?

Ps 2: Päivitin tähän skriptiin toimivan version.

Metabolix [28.12.2011 17:03:42]

#

Siis selvästikään muutos ei ollutkaan lomakkeen nimi, vaan muutos olikin tekstimuuttuja, jonka arvona on lomakkeen nimi. (Tosin nyt näköjään vaihdoit muuttujaksi lomake.) Vastaavasti muuttuja nimi on tekstimuuttuja, jonka arvona on checkboxin nimi. Koko tämä viritelmä on rumaa purkkaa, kun voisit välittää suoraan viittauksia itse objekteihin. Mutta kun et ole muissakaan tilanteissa halunnut purkkaasi parantaa, miksipä nytkään?

Joten jatketaan purkkalinjalla ja korjataan rivi näin:

document[lomake][nimi].checked = false;

pistemies [28.12.2011 17:07:31]

#

Vähän ennen sinun viestiä jo muutin sen takaisin form name="muutos". Yhä hokee samaa..

makumaku [28.12.2011 17:09:44]

#

Kun olet tuossa alempanakin käyttänyt getElementById:tä ja olet siis määritellyt id:n joillekin sivun elementeille, niin voisi olla myös selkeämpää määrittää id myös sille checkboxille, eli lisätä vaikka id="nimi" (jos haluaa käyttää samaa).
Ja sitten boxin valinnan poistaminen document.getElementById('nimi').checked=false;

pistemies [28.12.2011 17:20:37]

#

makumaku kirjoitti:

Kun olet tuossa alempanakin käyttänyt getElementById:tä ja olet siis määritellyt id:n joillekin sivun elementeille, niin voisi olla myös selkeämpää määrittää id myös sille checkboxille, eli lisätä vaikka id="nimi" (jos haluaa käyttää samaa).
Ja sitten boxin valinnan poistaminen document.getElementById('nimi').checked=false;

Kiitos paljon! Homma toimii.
Kiva saada asiallisia vastauksia eikä vaan ihmettelyjä että "sinä et osaa mitään".

Macro [28.12.2011 19:03:34]

#

Voit myös kokeilla seuraavaa.

document.forms[lomake].elements[nimi].checked = false;

Sivun alkuun

Vastaus

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

Tietoa sivustosta