Autor Zpráva
opicak
Profil *
Dobrý den, chtěl bych se zeptat, jestli někdo neznáte nějaký dobrý web o javascriptu a AJAXu, případně jestli by jste mi napsali odkaz.


Hlavně ne Jak psát web a Linuxsoft. Předem díky.
kordy
Profil
Proč ne jak psát web? Ten je nej. Pokud něčemu nerozumíš zeptej se na diskusi. V čem je problém?

Případně taky doporučuji tohle.
opicak
Profil *
kordy:

Děkuji, ale to jsem zkoušel(google) a v jak psát web mě naučili jen základ, ale já potřebuju pochopit např. tenhle kód...
// form validation function //
function validate(form) {
  var name = form.name.value;
  var email = form.email.value;
  var nameRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
  var musis = "Musíte zadat ";
  var format = "Tohle není správný formát ";
  
  if(name == "") {
    inlineMsg('name',musis+'přezdívku.',2);
    return false;
  }
  if(!name.match(nameRegex)) {
    inlineMsg('name',format+'přezdívky',2);
    return false;
  } 
  if(email == "") {
    inlineMsg('email','<strong>Error</strong><br />'+musis+'email.',2);
    return false;
  }
  if(!email.match(emailRegex)) {
    inlineMsg('email','<strong>Error</strong><br />'+format+'emailu.',2);
    return false;
  }
  return true;
}

// START OF MESSAGE SCRIPT //

var MSGTIMER = 20;
var MSGSPEED = 5;
var MSGOFFSET = 3;
var MSGHIDE = 3;

// build out the divs, set attributes and call the fade function //
function inlineMsg(target,string,autohide) {
  var msg;
  var msgcontent;
  if(!document.getElementById('msg')) {
    msg = document.createElement('div');
    msg.id = 'msg';
    msgcontent = document.createElement('div');
    msgcontent.id = 'msgcontent';
    document.body.appendChild(msg);
    msg.appendChild(msgcontent);
    msg.style.filter = 'alpha(opacity=0)';
    msg.style.opacity = 0;
    msg.alpha = 0;
  } else {
    msg = document.getElementById('msg');
    msgcontent = document.getElementById('msgcontent');
  }
  msgcontent.innerHTML = string;
  msg.style.display = 'block';
  var msgheight = msg.offsetHeight;
  var targetdiv = document.getElementById(target);
  targetdiv.focus();
  var targetheight = targetdiv.offsetHeight;
  var targetwidth = targetdiv.offsetWidth;
  var topposition = topPosition(targetdiv) - ((msgheight - targetheight) / 2);
  var leftposition = leftPosition(targetdiv) + targetwidth + MSGOFFSET;
  msg.style.top = topposition + 'px';
  msg.style.left = leftposition + 'px';
  clearInterval(msg.timer);
  msg.timer = setInterval("fadeMsg(1)", MSGTIMER);
  if(!autohide) {
    autohide = MSGHIDE;  
  }
  window.setTimeout("hideMsg()", (autohide * 1000));
}

// hide the form alert //
function hideMsg(msg) {
  var msg = document.getElementById('msg');
  if(!msg.timer) {
    msg.timer = setInterval("fadeMsg(0)", MSGTIMER);
  }
}

// face the message box //
function fadeMsg(flag) {
  if(flag == null) {
    flag = 1;
  }
  var msg = document.getElementById('msg');
  var value;
  if(flag == 1) {
    value = msg.alpha + MSGSPEED;
  } else {
    value = msg.alpha - MSGSPEED;
  }
  msg.alpha = value;
  msg.style.opacity = (value / 100);
  msg.style.filter = 'alpha(opacity=' + value + ')';
  if(value >= 99) {
    clearInterval(msg.timer);
    msg.timer = null;
  } else if(value <= 1) {
    msg.style.display = "none";
    clearInterval(msg.timer);
  }
}

// calculate the position of the element in relation to the left of the browser //
function leftPosition(target) {
  var left = 0;
  if(target.offsetParent) {
    while(1) {
      left += target.offsetLeft;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.x) {
    left += target.x;
  }
  return left;
}

// calculate the position of the element in relation to the top of the browser window //
function topPosition(target) {
  var top = 0;
  if(target.offsetParent) {
    while(1) {
      top += target.offsetTop;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.y) {
    top += target.y;
  }
  return top;
}

// preload the arrow //
if(document.images) {
  arrow = new Image(7,80); 
  arrow.src = "images/msg_arrow.gif"; 
}
opicak
Profil *
Začátek chápu, ale od funkcí už nevim a na 6 řádku vím že je chyba s apostrofy, ale na tom teď, tak nezáleží. Pořaďte prosím nějaký ten web.
kordy
Profil
Pak ti doporučuji si kliknout na konkrétní příkaz scriptu a on otevře se ti vysvětlení sice v angličtině, ale to je dnes při programování téměř nutnost... Pokud nejsi sběhlý v AJ www.translate.google.com a vlož tam url přeloží ti celou stránku.

Edit:Teď nevím jestli jsem to popsal srozumitelně, v tom kódu co jsi sem vložil si klikej na příkazy, kterým nerozumíš.
_es
Profil
opicak:
já potřebuju pochopit např. tenhle kód
Veď ho máš celkom pekne okomentovaný.
Kódy na tejto diskusii majú tú dobrú vlastnosť, že sa v nich automaticky vytvárajú odkazy na dokumentáciu, to môžeš využiť.
Alebo môžeš rovno čítať tú dokumentáciu doradu. Alebo si zakúp nejakú knihu.
kordy
Profil
No, bylo mi blbý říct to tak jako _es, ale kniha je opravdu ideální... Z dlouhého koukání do monitoru bolí očka :)
Možná to tak nevypadá, ale v podstatě ušetříš, protože koupit knihu za 300Kč je levnější, než si pak nechat operovat oči za několik tisíc.
Navíc v knize je to vysvětleno většinou jak pro blbečky s pěkným příkladem. Já mám tuhle: http://www.zbozi.cz/p298695-javascript-krok-za-krokem/?q=javascript&sId=UuHtBAYrwGzm_Xjwu-fH&r=zbozi1&productName=JavaScript%20-%20Krok%20za%20krokem

A řek bych, že v ní je všechno podstatný...
opicak
Profil *
Dobře, mockrát díky obou, dám na vaše rady, ale tu knihu si kupovat nebudu, není to zas tak potřebné na můj web, tak nic jiného než translator nezbývá.
okolojdouci
Profil *
opicak:
Vtip je v tom, že ty nemusíš chápat, jak to funguje uvnitř. (jestli správně chápu souvislosti a ty to chceš jen použít)

Postup, jak to použít:

1. uložíš do nějakého souboru s příponou js a přilinkuješ to k html.
2. formulář, kde to chceš použít, bude začínat asi takto:
<form action='?' name='form' id='form'  onsubmit='return validate(this)' method='post'>

3. každý z prvků toho formuláře má id a name, tzn.
<input name='nazev' id='nazev' value=''>

4. v tom JS pak řešíš z celého toho obsahu jen to, co je tady na ř. 3-27

Zkus si tam místo ř. 3-27 dát jen
  var name = form.name.value;
  
  if(name == "") {
    inlineMsg('name','chybí jméno',2);
    return false;
  }


Nevím, jestli jsem víc OT já, nebo celé tohle vlákno. Jsem konkrétní, protože vím, co konkrétně řešíš. Ten skript používám už dlouho, má jen jedinou chybku - nedá se nikde stáhnout s nějakými příklady. Autor neznámý.
opicak
Profil *
Ne, já jsem si našel na netu script i formulář v php souboru to mám nějak takto
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<script src="js/overeni-dat.js"></script>

<form name="form" id="form" class="form" onsubmit="return validate(this)" method="post">
    <label for="name">Full Name:</label>
    <input type="text" name="name" id="name" />
    <label for="email">Email Address:</label>
    <input type="text" name="email" id="email" />
    <label for="gender">Gender:</label>
    <select name="gender" id="gender">
      <option value ="">Please Select</option>
      <option value ="male">Male</option>
      <option value ="female">Female</option>
    </select>
    <label for="message">Message:</label>
    <input type="text" name="message" id="message" />
    <input type="submit" value="Submit" class="submit" />
  </form>


Potřeboval jsem to pochopit, abych si udělal něco podobného, ale to už je teď jedno.

Html5 má nový atribut required, sice to nekontroluje formát pole jestli je to např. email, ale kontroluje to alespoň jestli, je pole vyplněné bo není.
opicak
Profil *
a zrovna řádek 3-27 chápu moc dobře, přece jenom se to podobá php.
_es
Profil
opicak:
přece jenom se to podobá php
Hlavne neočakávaj, že tomu dostatočne porozumieš bez štúdia teórie, len pozeraním do kódu a sledovaním podobností s iným programovacím jazykom.
opicak
Profil *
Jen otázka, nechce se mi zakládat nový topic.

Chtěl bych se zeptat, jestli je lepší dělat registraci(login) na webu přes OOP a kdyžtak proč ?
Louka
Profil
Ve výsledku je to asi jedno, jestli ti pomůže mít hezčí kód, tak pak jsem pro OOP.
opicak
Profil *
Díky
peta
Profil
Validate
var - definovani promennych, Regex jsou regularni vyrazy google: new RegExp
if (podminka) {piszpravu('text'); ukonci funkci validate s hodnotou false}

inlineMsg
Vypisuje chybovou zpravu, klidne muzes pouzit alert('text')
Do divu s id=msg prida div s textem, pokud tam takovy neni
document.getElementById('msg') += '<div id="msgcontent">'+text+'</div>';
Nastavi css (to by se dalo resit v css a ne pres js).
Pokud je nastavene zhasinani, tak hlasku za 1000 ms zhasne. S tim, ze efekt fade navic prepocitava opacitu, takze kazdych 1000 ms to teda nezhasne, ale bude se rozplyvat do ztracena.
JPW - CSS - filter
JPW - JS priklady - Casovace a datum

leftPosition, rightPosition
Zjisteni spravne pozice od okraje pro ruzne prohlizece.

msg.alpha = value;
msg.style.opacity = (value / 100);
msg.style.filter = 'alpha(opacity=' + value + ')';
Nastaveni opacity pro ruzne prohlizece.

V podstate spouste tech veci tam nemusi byt. Da se resit pres jquery nebo css tak, ze bych tomu rozumel mozna vic.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: