Szerző Téma: Formok  (Megtekintve 47089 alkalommal)

0 Felhasználó és 1 vendég van a témában

Nem elérhető pixi

  • Törzstag
  • **
  • Hozzászólások: 611
    • http://pixy.hu/Ujoldal
Re: Formok
« Válasz #496 Dátum: 2011. március 13., 22:07:37 »
Kösz az ötleteket, de ezek nem segítettek. Valami más apróság lehet a hiba oka.
Hajnalban felkeltem, mert eszembe jutott, hogy egy másik programban is van minus nevű függvény, amivel összeakadhat, de hiába kapott más nevet, akkor sem működött jól.
A legújabb fejlemény, hogy ha az onload után bármilyen nemlétező függvénynevet írok, akkor is elindul valami függvény, de az nem ez lesz, mert az ellenőrzésképpen betett alert('xxx') meg sem nyikkan, de emellett a form 20 sec-re inaktívvá válik, majd aktív lesz, ahogy kell.


Kód: Javascript
  1. <script type='text/javascript'>
  2.         counter = 20;  
  3.         var ido = null;
  4.         function minus()
  5.         { alert('xxx');
  6.                 document.getElementById('szkiir').value = counter+" sec";
  7.                 if( counter > 0) {      counter--;      }  else  { return; }
  8.                 ido = setTimeout(function(){
  9.                         minus();
  10.                 },1000);
  11.         }
  12. </script>

Kód: HTML
  1. <body onload='xyz()'>

Nem elérhető ThompsoN

  • Törzstag
  • **
  • Hozzászólások: 554
  • ThompsoN
Re: Formok
« Válasz #495 Dátum: 2011. március 13., 20:19:56 »
Kód: HTML
  1. <body onload='javascript: ...'>
az szerintem hibás.
onload-nál (és az összes többi eseménynél) nem kell (nem szabad?) a javascript: részt odaírni.
Ennyi is elég:
Kód: HTML
  1. <body onload='minus()'>

<script language='javascript'> helyett használj <script type=text/'javascript'>-et. (így valid)
Kód: Javascript
  1.         counter = 20;  
  2.         var ido = null;
  3.         function minus()
  4.         {
  5.                 document.getElementById('szkiir').value = counter+" sec";
  6.                 if( counter > 0) {
  7.                         counter--;
  8.                 }  else  {
  9.                         return;
  10.                 }
  11.                 ido = setTimeout(function(){
  12.                         minus();
  13.                 },1000);
  14.         }
  15. </script>

Elvileg így jónak kell lennie.
ThompsoN

Nem elérhető pixi

  • Törzstag
  • **
  • Hozzászólások: 611
    • http://pixy.hu/Ujoldal
Re: Formok
« Válasz #494 Dátum: 2011. március 13., 17:40:22 »
Az alábbi kódrészletet 3 különböző honlapon használom. A lényege, hogy form elküldése után, a felvevő program létrehoz egy 20 sec élettartamú, flood nevű sütit, majd header-rel újraindítja a formot tartalmazó programot.
Ha van süti, akkor a <body onload elindítja a visszaszámláló függvényt, egyúttal a form inaktív lesz és az addig 'Mehet' feliratú gombon megy a visszaszámlálás, 20-tól, nulláig. Ha végzett, akkor van egy frissítés és mivel a süti már nem él, a form újra aktív lesz.

Egy honlapon ez rendben működik, de két másikon, ahová egy az egyben lettek átmásolva, a form ugyan inaktív lesz, ami 20 sec után megszűnik, ahogy kell, de a visszaszámlálás nem jelenik meg az input ablakban:

Kód: Javascript
  1. <script language='javascript'>
  2.         counter = 20;  
  3.         var ido
  4.         function minus()
  5.         {
  6.         document.getElementById('szkiir').value = counter+" sec";
  7.         if( counter > 0) { counter--; }  else  { return; }
  8.         ido=setTimeout("minus()",1000);
  9.         }
  10. </script>


Kód: PHP
  1. if ( isset ( $_COOKIE['flood']))
  2.         {
  3.         echo "<body onload='javascript: minus()'>";
  4.         $disabled = "disabled style='background: #EBEBEB'";
  5.         }
  6. else { echo "<body>"; $disabled = ""; }


Kód: PHP
  1. if ( !isset ( $_COOKIE['flood']))
  2.         {
  3.         echo "<input style='font: 11px arial; color: green;' type='submit' name='ok' VALUE='Mehet'  $disabled  />
  4.         </form>";
  5.         }
  6. else
  7.         {
  8.         echo "<input id='szkiir' style='font: 11px arial; color: navy; width: 40px' type='button'  />";  // visszaszámlálás kiiratása
  9.         header('Refresh: 22');
  10.         }

Már 4 napja evvel birkózok. A legtöbb, amit sikerült elérni, hogy ...innerHTML-el egy div-ben sikerült a visszaszámlálást megjeleníteni, de az input ablakban azért sem írja ki.

teljes kód letöltés
« Utoljára szerkesztve: 2011. március 13., 17:47:32 írta pixi »

Nem elérhető ThompsoN

  • Törzstag
  • **
  • Hozzászólások: 554
  • ThompsoN
Re: Formok
« Válasz #493 Dátum: 2010. december 06., 14:13:18 »
Nincs mit.:)
ThompsoN

Nem elérhető pixi

  • Törzstag
  • **
  • Hozzászólások: 611
    • http://pixy.hu/Ujoldal
Re: Formok
« Válasz #492 Dátum: 2010. december 06., 13:48:36 »
Újfent köszönet.

Nem elérhető ThompsoN

  • Törzstag
  • **
  • Hozzászólások: 554
  • ThompsoN
Re: Formok
« Válasz #491 Dátum: 2010. december 06., 12:58:30 »
Azért nem jó, mivel miután törlöd az ido változó tartalmát, a kód újra feltölti azt a setTimeout()-al. Ezért a végtelenségig megy a kód, és ezért lesz hibás.
A counter() fgv.-be a clearTimeout() helyett írj be egy return false;-t. Máris jó lesz.:)
ThompsoN

Nem elérhető pixi

  • Törzstag
  • **
  • Hozzászólások: 611
    • http://pixy.hu/Ujoldal
Re: Formok
« Válasz #490 Dátum: 2010. december 05., 19:15:58 »
A kód a form-ból küldött adatokat ellenőrzi. A hibákat egy 5-másodpercre felugró div-ben írja ki, a visszaszámlálás a submit gombra van kiíratva. Első futáskor a visszaszámlálás szabályos, a többi indításkor már gyorsabb és zaklatott. Futás után a visszaszámláló részt kellene alaphelyzetbe állítani, de nem akar sikerülni.
Túl nagy jelentősége nincs, az egész csak js gyakorlás céljából készült.

Kód: HTML
  1.  
  2. <script language='javascript'>
  3.  
  4.  function vizsgal() {
  5.         szam = 5;      
  6.         var ido;
  7.         var text = "";
  8.        
  9.         if ( document.urlap.nev.value=="")   { text += 'ures nev <br>'; }
  10.         if ( document.urlap.varos.value=="") { text += 'ures varos <br>'; }
  11.         if ( document.urlap.pass1.value=="") { text += 'ures 1. jelszo <br>'; }
  12.         if ( document.urlap.pass2.value=="") { text += 'ures 2. jelszo <br>'; }
  13.         if ( document.urlap.pass1.value!=document.urlap.pass2.value) { text += 'a ket jelszo nem egyezik <br>'; }
  14.        
  15.         if ( text != "") {
  16.                 document.getElementById('divid').style.display  = 'block';
  17.                 document.getElementById('divid').style.position = 'absolute';
  18.                 document.getElementById('divid').innerHTML = text;
  19.                 setTimeout('counter()',10);
  20.                 return false;
  21.                 }
  22.         }
  23.  
  24.  function counter() {
  25.         document.getElementById('szkiir').value = szam+" sec";
  26.         if ( szam > 0)
  27.                 { szam--; }
  28.         else
  29.                 {
  30.                 document.getElementById('divid').style.display  = 'none';
  31.                 document.getElementById('divid').style.position = 'relative';
  32.                 document.getElementById('divid').innerHTML = "";
  33.                 document.getElementById('szkiir').value = "ok";
  34.                 clearTimeout(ido);
  35.                 }
  36.         ido=setTimeout("counter()",1000);
  37.         }      
  38. </script>
  39.  
  40. </head>
  41.  
  42. <div id='divid' style='font: 11px arial; display: none; position: relative; width: 150px; height: 100px; background: #FFFFC0; border: 1px solid gray; padding: 5px' >  </div>
  43.  
  44. <form name='urlap' onSubmit='return vizsgal();' >
  45.         <input type='text' name='nev'   >       nev     <br>
  46.         <input type='text' name='varos' >       varos   <br>
  47.         <input type='text' name='pass1' >       jelszo1 <br>
  48.         <input type='text' name='pass2' >       jelszo2 <br><br>
  49.         <input type='submit' value='ok' id='szkiir'>
  50. </form>
  51.  
  52. </body></html>

Nem elérhető pixi

  • Törzstag
  • **
  • Hozzászólások: 611
    • http://pixy.hu/Ujoldal
Re: Formok
« Válasz #489 Dátum: 2010. december 03., 22:54:29 »
A francba! Tegnap óta birkózok evvel és nem értettem, hogy mi a franc baja van. Annó régen ki, kifelejtettem a pontosvesszőt, most meg lehet ezt akartam bepótolni. Kösz!

Nem elérhető ThompsoN

  • Törzstag
  • **
  • Hozzászólások: 554
  • ThompsoN
Re: Formok
« Válasz #488 Dátum: 2010. december 03., 22:07:42 »
A 3. ifnél a feltételbe miért tettél ;-t? Azért nem jó.
ThompsoN

Nem elérhető pixi

  • Törzstag
  • **
  • Hozzászólások: 611
    • http://pixy.hu/Ujoldal
Re: Formok
« Válasz #487 Dátum: 2010. december 03., 22:06:10 »
Ebben mi a hiba? Meg sem nyekken. Mezőnként ki tudom iratni a hibaüzeneteket, de így összegyüjtve nem:

Kód: Javascript
  1. <script language='javascript'>
  2.  function vizsgal() {  
  3.  
  4.  var text = "";
  5.        
  6.   if (document.urlap.nev.value=="")   { text += 'ures nev! \n';  }
  7.   if (document.urlap.varos.value=="") { text += 'ures varos! \n';  }
  8.        
  9.   if ( text != ""; ) {
  10.    alert(text);
  11.    return false;
  12.    }
  13. }
  14. </script>

Nem elérhető Quadmaster

  • Tag
  • *
  • Hozzászólások: 158
    • QMDesign
Re: Formok
« Válasz #486 Dátum: 2010. december 02., 22:02:49 »
az input mezőnek a tartalmát akarom vizsgálni

up: this valuéra kijavítottam de felfelé módosul is viszont ha visszatörlök akkor már nem áll vissza az eredetire sajna ez a főbb gondom:S

sikerült megoldani onkeyupra kellet cserélni a htmlt
« Utoljára szerkesztve: 2010. december 02., 22:23:17 írta Quadmaster »

Nem elérhető <madbence />

  • Teljes tag
  • ***
  • Hozzászólások: 1.629
  • Twitterista :)
    • Blogom
Re: Formok
« Válasz #485 Dátum: 2010. december 02., 22:00:38 »
miért a this.id-t adod át? gondolom nem az id-nek a hosszát akarod vizsgálni.
mi chuck norris email címe? gmail@chucknorris.com
Blog: napszemuvegbe.tumblr.com
Twitter: twitter.com/madbence

Nem elérhető Quadmaster

  • Tag
  • *
  • Hozzászólások: 158
    • QMDesign
Re: Formok
« Válasz #484 Dátum: 2010. december 02., 21:43:04 »
Hali, a következő a gondom azt szeretném megoldano hogy ha töltöm ki a formot, és amit éppen írok bele az megfelel a feltételnek akkor kiirja hogy siker ellenkező esetben meg hogy nem sikerült.

mellékelem a kódot:
Kód: Javascript
  1. <script type="text/javascript">
  2. function ezmiez(asd) {
  3.                 var asd;
  4.                 if (asd.length < 8) {
  5.                         document.getElementById('valami').innerHTML='kevesebb mint nyolc';
  6.                        
  7.                 } else {
  8.                         document.getElementById('valami').innerHTML='nem kevesebb mint nyolc';
  9.                 }
  10. }
  11. </script>
  12.  
  13.  

itt a html része
Kód: HTML
  1. <input type="text" OnKeyPress="ezmiez(this.id)">
  2.  
  3. <div id="valami"></div>


a baj lényegében az hogy nem írja felül:S az előzőt:S
« Utoljára szerkesztve: 2010. december 02., 21:50:43 írta Quadmaster »

Nem elérhető <madbence />

  • Teljes tag
  • ***
  • Hozzászólások: 1.629
  • Twitterista :)
    • Blogom
Re: Formok
« Válasz #483 Dátum: 2010. november 17., 21:45:28 »
gondolom a thisinput_c null, aminek nincs hossza, így elszáll.
mivel hívod meg ezt a checkinputs függvényt? mert ha a fentebbi tömbbel, akkor az hiba :)
mi chuck norris email címe? gmail@chucknorris.com
Blog: napszemuvegbe.tumblr.com
Twitter: twitter.com/madbence

Nem elérhető phplovag

  • Felhasználó
  • Hozzászólások: 83
Re: Formok
« Válasz #482 Dátum: 2010. november 17., 18:42:47 »
szimpla input checkert akartam írni, de nem akar összejönni
Kód: Javascript
  1. var register_inputs = new Array('username', 'email', 'password', 'password2', 'first_name', 'last_name', 'language');
  2.  
  3. function checkinputs(inputs) {
  4.         if(isArray(inputs)) {
  5.                 for (var i=0; i<inputs.length; i++) {
  6.                         var thisinput = inputs[i];
  7.                         var thisinput_c = thisinput.value;
  8.                         var thisinput_l = thisinput_c.length;
  9.                         if(thisinput_l == 0) {
  10.                                 var dontgo = 1;
  11.                                 var thiselement = document.getElementById(thisinput);
  12.                                 thiselement.className = "error_textbox";
  13.                         }
  14.                 }
  15.                 if(dontgo == 1) {
  16.                         return false;
  17.                 } else {
  18.                         return true;
  19.                 }
  20.         } else {
  21.                 return true;
  22.         }
  23. }

hibakonzolok üresek... a kód elszáll a this_input_l változó beállításánál (alert ablakokkal ellenőriztem mielőtt vki megkérdezné hogy honnan tudom)...
elöre is köszönöm a segítséget