Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  checkbox checked märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
tulema
HV kasutaja

liitunud: 23.04.2003



Autoriseeritud ID-kaardiga

sõnum 21.04.2010 21:32:50 checkbox checked vasta tsitaadiga

Näide: http://www.

Olen jõudnud sellisesse punkti, kus enam edasi teha ei oska, sest "onClick" tuli mitu erinevat funktsiooni sisse.
1. Ühesõnaga ma tahan sellist tulemust, kus Hingamisruum 1 ja 2 täidab "Hingamisruum_töötav" funktsiooni.
2. Textarea väljal läheb tekst üksteise alla mitte ei jookse teisele otsa:
Hingamisruum1
Hingamisruum2
3. Abi icon_exclaim.gif

<head>
<script type="text/javascript">
function attachMe(text) {
    var elm = document.getElementById('content');
    var re = new RegExp(text, 'gi');
    if (elm.innerHTML.match(re)) {
        elm.innerHTML = elm.innerHTML.replace(re, '');
    }
    else {
        elm.innerHTML += text;
    }
}


function color1(){
   document.getElementById("div_ID").style.cssText="color:#FF0000;";
   }
function color2(){
   document.getElementById("div_ID").style.cssText="color:#000;";
   }   
function BG (it, box) {
   var vis = (box.checked) ? color1() : color2();
   return vis;
}
</script>


</head>
<body>
<input name="" type="checkbox" value=""><a href="#" onclick="attachMe('Hingamisruum1');">Hingamisruum 1</a> <br />
<input name="" type="checkbox" value=""><a href="#" onclick="attachMe('Hingamisruum2');">Hingamisruum 2</a><br />
<textarea name="content" cols="50" id="content"></textarea>
<table width="400">
  <tr>
    <td id="div_ID">    
    <label for="cbox"><input name="cbox>" id="cbox" type="checkbox"  onClick="BG('DIV_id', this);" value=""  />Hingamisruum_t&#246;&#246;tav</label></form>
   </td>
  </tr>
</table>
</body>
</html>


viimati muutis tulema 29.04.2010 16:36:50, muudetud 1 kord
Kommentaarid: 58 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 52
tagasi üles
vaata kasutaja infot saada privaatsõnum
czcc
HV vaatleja

liitunud: 22.04.2005



Autoriseeritud ID-kaardiga

sõnum 22.04.2010 09:40:29 vasta tsitaadiga

Teise probleemi lahendus:
function attachMe(text) {
    var elm = document.getElementById('content');
    var re = new RegExp(text+"\n", 'gi');
    if (elm.innerHTML.match(re)) {
        elm.innerHTML = elm.innerHTML.replace(re, '');
    }
    else {
        elm.innerHTML += text+"\n";
    }
}


Esimesest ei saa aru, mida see täpselt tegema peab?
Kommentaarid: 18 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 16
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 22.04.2010 12:52:22 vasta tsitaadiga

textArea sisu peaks olema value, innerHTML on ikkagi rohkem kogu html koodi jaoks. Kustutamiseks on see hea, kuna tõmbab automaatselt ka reavahetused maha.

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function attachMe(text) {
    var elm = document.getElementById('content');
    var re = new RegExp(text, 'gi');
    if (elm.innerHTML.match(re)) {
        elm.innerHTML = elm.innerHTML.replace(re, '');
      if(elm.value){elm.value+="\n";}
    }
    else {
        elm.value+= text+"\n";
    }
}


function color1(){
   document.getElementById("div_ID").style.cssText="color:#FF0000;";
   }
function color2(){
   document.getElementById("div_ID").style.cssText="color:#000;";
   }   
function BG (it, box) {
   var vis = (box.checked) ? color1() : color2();
   return vis;
}


   // chb margistamine / tyhistamine
      function tseki(id, nm){
         vorm = id.elements;
            for(i=0;i<vorm.length;i++){
               kontrol = 0;
                  if(vorm[i].type == "checkbox" && vorm[i].name === nm){
                     if(vorm[i].checked==true){
                           vorm[i].checked = false;kontrol =1;
                                                         }
                              if(vorm[i].checked==false && kontrol==0){
                                    vorm[i].checked = true;
                                                                                       }
                                                            }
                                                }
                                    }
                                    
                  

</script>


</head>
<body>
<form id="f1">
<input name="e" type="checkbox" value="" ><a href="#"    onclick="attachMe('Hingamisruum1');tseki(this.parentNode, 'e');">Hingamisruum 1</a><br />
<input name="e2" type="checkbox" value=""><a href="#" onclick="attachMe('Hingamisruum2');tseki(this.parentNode, 'e2');">Hingamisruum 2</a><br />
<textarea name="content" cols="50" id="content"></textarea>
<table width="400">
  <tr>
    <td id="div_ID">     
    <label for="cbox"><input name="cbox>" id="cbox" type="checkbox"  onClick="BG('DIV_id', this);" value=""  />Hingamisruum_töötav</label></form>
   </td>
  </tr>
</table>
</form>
</body>
</html>

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 22.04.2010 16:04:37 Re: checkbox checked vasta tsitaadiga

tulema kirjutas:
1. Ühesõnaga ma tahan sellist tulemust, kus Hingamisruum 1 ja 2 täidab "Hingamisruum_töötav" funktsiooni.

Nagu czcc, ei saa minagi sellest lausest aru.

_________________
Mõistus otsas? Pane pinusse...
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 22.04.2010 17:04:03 vasta tsitaadiga

Jut siis checked function tegemisest. Seletus on jah poolik, kui kood käima panna, siis alles saab aru.
_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
tulema
HV kasutaja

liitunud: 23.04.2003



Autoriseeritud ID-kaardiga

sõnum 22.04.2010 19:37:11 vasta tsitaadiga

Vabandan väga pooliku teema eest – teema kirjutamise ajal läks kiireks ja nii läkski nö. poolik teema teele.

Mis puutub esimest punkti, siis küsimuse põhimõte on järgmine, mille toon näite põhjal esile.
Toome näite.
Kui me klikime Hingamisruum 1, siis peab minema linnuke kasti ja Hingamisruum 1 muutub punaseks värviks. Teisel korral klikates Hingamisruum 1, siis kaob linnuke kastist ära ja punane värv muutub mustaks.
Kui minna näitelehele ja klikata Hingamisruum_töötav, siis saab põhimõttest aru, kuidas peab töötama Hingamisruum 1 ja Hingamisruum 2.

andrusny kood töötab ilusti, kus klikates läheb linnuke kasti aga ei muuda värvi.
Näide: http://www.hot.ee/

czcc: Tänan sind teise punkti täitmise eest.

Loodetavasti on nüüd natukene selgem ülevaade küsimusest.


viimati muutis tulema 05.06.2012 17:33:57, muudetud 1 kord
Kommentaarid: 58 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 52
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 22.04.2010 19:48:08 vasta tsitaadiga

Tegin functioni pisikese paranduse. onclick sees on siis ka teisiti.
onclick="attachMe('Hingamisruum1');tseki(this, 'e');"


// chb margistamine / tyhistamine
      function tseki(id, nm){
         vorm = id.parentNode.elements;
            for(i=0;i<vorm.length;i++){
               kontrol = 0;
                  if(vorm[i].type == "checkbox" && vorm[i].name === nm){
                     if(vorm[i].checked==true){
                     id.style.color = '#000';
                           vorm[i].checked = false;kontrol =1;
                                                         }
                              if(vorm[i].checked==false && kontrol==0){
                              id.style.color = '#FF0000';
                                    vorm[i].checked = true;
                                                                                       }
                                                            }
                                                }
                                    }

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 22.04.2010 20:41:30 vasta tsitaadiga

andrusny, trepi inimlikult, see praegune stiil on sama hea kui treppimata kood.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
tulema
HV kasutaja

liitunud: 23.04.2003



Autoriseeritud ID-kaardiga

sõnum 22.04.2010 21:35:51 vasta tsitaadiga

Tulemus hakkab juba ilmet võtma aga siiski on üks viga veel sees. Nimelt selline varinat peab ka olema, kui panna linnuke kasti, siis muudab värvi ja samas lisab info textarea väljale.

4. Järgmine ja ühtlaselt viimane küsimus selle teema kohta. Kuidas või kas selline võimalus on üldse teostav, et kogu info, mis on textarea väljal salvestada .txt failiformaati - allalaetav fail?
Näide: http://www.hot.ee/

Kogu selle protsessi kohta läks algus kenasti aga lõpp läks viltu, kui omavahel hakata neid siduma.


viimati muutis tulema 05.06.2012 17:34:12, muudetud 1 kord
Kommentaarid: 58 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 52
tagasi üles
vaata kasutaja infot saada privaatsõnum
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 22.04.2010 23:03:47 vasta tsitaadiga

Lingi klikkimise peale JavaScriptiga checkboxi märkimine on HTML-is juba olemasoleva funktsionaalsuse uuesti leiutamine. Kasuta <label> elementi. Näiteks nõnda:

html:
  1. <body onload="init();">
  2.  
  3. <form action="">
  4.   <ul id="checkboxes">
  5.     <li><label for="cb1"><input id="cb1" type="checkbox" value="Hingamisruum1"> Checkbox 1</label></li>
  6.     <li><label for="cb2"><input id="cb2" type="checkbox" value="Hingamisruum2"> Checkbox 2</label></li>
  7.     <li><label for="cb3"><input id="cb3" type="checkbox" value="Hingamisruum3"> Checkbox 3</label></li>
  8.   </ul>
  9.  
  10.   <textarea name="content" cols="50" rows="5" id="content"></textarea>
  11. </form>
  12.  
  13. </body>


Nüüd saab checkboxi kõrval olevale tekstile klikkides checkboxi lülitada. Ja seda ilme igasuguse JavaScriptita. for="" atribuut määrab ära milline label millise checkboxiga seotud on. Uuematele brauseritele piisab kui checkbox on lihtsalt labeli sees, aga vanemad IE-d ei saa aru.

Esitasin selle checkboxide loendi... millena siis veel kui... loendina. Kui sulle need mummud seal ees ei meeldi, siis kasuta CSS-i, et seda kõike oma maitse järgi kujundada. Ka labelid võid CSS-i abil panna välja nägema nagu lingid.

Seejärel paneme lehe laadimisel igale checkboxile külge onchange puhul käivitatava funktsiooni:

javascript:
  1. // käivitub lehe laadimisel
  2. function init() {
  3.   var checkboxes = document.getElementById("checkboxes").getElementsByTagName("input");
  4.   for (var i=0; i<checkboxes.length; i++) {
  5.     checkboxes[i].onchange = function() {
  6.       // muudame checkboxi parent elemendi (label) värvi
  7.       this.parentNode.style.color = this.checked ? 'red' : 'black';
  8.       // lisame/eemaldame textareasse checkboxi enda väärtuse
  9.       addRemoveText(this.value);
  10.     };
  11.   }
  12. }
  13.  
  14. function addRemoveText(text) {
  15.   var contentArea = document.getElementById('content');
  16.   var content = contentArea.value;
  17.   // natuke peenem regulaaravaldis tuvastamaks kõikvõimalikke reavahetusi,
  18.   // sest ehkki JavaScripti poolt lisatakse \n, teisendab brauser
  19.   // selle tavaliselt \r\n reavahetuseks.
  20.   var re = new RegExp(text+"(\r\n|\r|\n)", 'gi');
  21.   if (content.match(re)) {
  22.     contentArea.value = content.replace(re, '');
  23.   }
  24.   else {
  25.     contentArea.value += text+"\n";
  26.   }
  27. }


tsitaat:
Kuidas või kas selline võimalus on üldse teostav, et kogu info, mis on textarea väljal salvestada .txt failiformaati - allalaetav fail?


Kahjuks siinkohal puhtalt JavaScriptist ei piisa. (Kui sind muidugi huvitab lahendus, mis IE puhul samuti töötab.)

Mu meelest parim meetod selleks oleks selle textarea sisu postitada mingile serveri skriptile, mis siis tollesama teksti koos Content-Type: text/plain päisega tagasi saadab.

_________________
Mõistus otsas? Pane pinusse...
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
tulema
HV kasutaja

liitunud: 23.04.2003



Autoriseeritud ID-kaardiga

sõnum 25.04.2010 21:18:32 vasta tsitaadiga

nene: Tänan sisuka ja õpetliku vastuse eest.

Leidsin lahenduse neljandale küsimusele, kuidas textarea väljalt saada info kätte ja teha allalaetavaks .txt failiks. Lahendi töölesaamiseks kulus keskmiselt 3h peale nene postitust, kus tõi võimaluse välja: Content-Type: text/plain.
<?php
if(isSet($_REQUEST["content"])){
  header("Content-disposition: attachment; filename=andmed.txt");
  echo $_REQUEST["content"];
  exit();
}
?>

Huvi pärast proovisin erinevaid faililaiendeid, kas töötab või mitte -.txt, .doc ja .rtf - kõik töötavad. Saatuslikuks sai .reg fail, kus firefox topib oma .htm laiendi taha ehk andmed.reg.htm, samas IE's töötab.
Näide ka: Link eemaldatud.
Kas on võimalik ka firefoxis see tööle saada, et allalaetav fail on .reg laiendiga?

Edit:
Sain tööle, lisades rea juurde: header("Content-Type: application/force-download; filename=$andmed.reg");
Kommentaarid: 58 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 52
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  checkbox checked
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.