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.
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.
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.
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"?
Checkboxissa syötetään funktiolle checkboxin name-atribuutti, joka on tietysti jokaisessa checkboxissa eri.
Kuulostaa hyvältä, näytä koko koodi.
Enste kuiten, miten on, tartteeko lomakkeen nimeä syöttää erikseen funktiolle, vai riittääkö tuo lausahdus document.muutos...?
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.
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;
Vähän ennen sinun viestiä jo muutin sen takaisin form name="muutos". Yhä hokee samaa..
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;
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".
Voit myös kokeilla seuraavaa.
document.forms[lomake].elements[nimi].checked = false;
Aihe on jo aika vanha, joten et voi enää vastata siihen.