Autor Zpráva
charlie2806
Profil
Marně hledám a zkouším jak ještě před odeslání m formuláře udělat podle 3 polí ulice, c.p. a město tlačítko, které by odevrelo nové okno s mapou a ukázalo adresu podle těch 3 vyplnenych poli
Jestli javascript umí vzít hodnoty a zavolat podle nich nové okno
Pořád nemohu přijít na to jak
Jsem tedy začátečník
Darker
Profil
Získání hodnoty z pole formuláře.
Otevření nového okna.
Javascript API pro Google maps - pokusím se najít přímo to, co hledáš, ale nevidím důvod, proč bys mezitím nemohl hledat také.


Asi bych pro začátek zkusil nové okno nasměrovat na výsledek vyhledávání na zadanou adresu:

"https://maps.google.cz/maps?q="+adresa_z_formulare
charlie2806
Profil
API jsem našel už dávno a tu spodní adresu mám přesně takhle odzkouseno a v html není problém
Ale potrebuju to udělat z vyplnenych polí ještě před odeslanim formuláře
Nevím jak nacist v javascriptu pole a vytvořit URL a otevřít okno
Darker
Profil
charlie2806:
Ale potrebuju to udělat z vyplnenych polí ještě před odeslanim formuláře

Darker:
Získání hodnoty z pole formuláře.


A příště se nestyď sdělit, jak daleko jsi už s řešením problému pokročil.
charlie2806
Profil
Darker:
Získání hodnoty mě směřuje na jiný zápis ale to bych i našel
Okno i podle příkladu se mi stále otevírá ve stejném okně a tu adresu navíc skládá m asi blbě
Nešel by prosím napsat příklad, mě ještě zatím asi trochu uniká syntax
Darker
Profil
charlie2806:
Okno i podle příkladu se mi stále otevírá ve stejném okně a tu adresu navíc skládá m asi blbě
Mohli bychom to vidět?
charlie2806
Profil
Darker:
Večer jsem dám zdroj co jsem zpatlal. Jsem teď v autě


Živou ukázku nemám, mám to zatím jen na locale
Keeehi
Profil
charlie2806:
Živou ukázku nemám, mám to zatím jen na locale
Jedna z typických výmluv.
charlie2806
Profil
Keeehi:
http://eger.cz/zkouska.html
Darker
Profil
Asi to bude chtít povídání o escapování. Zklamalo mě, že se mi nepovedlo vyhledat žádný přehledný článek.
V HTML můžeš pro eventy používat uvozovky dvěma způsoby: buď použiješ místo uvozovky její entitu (hádám že ") nebo místo uvozovky použiješ apostrof, který se v javascriptu chová stejně jako uvozovka.
Rovnou také zmíním, že by se rovněž měly nahrazovat znaky AND (&) v odkazech: http://host.com/path?name=value&name2=value2
Tedy například:<span onclick="window.open('https://maps.google.cz/maps?q=' + document.obec.value, '_blank'); return false">
Možná by ses dostal dál, kdybys používal editor se zvýrazňováním syntaxe. (např.: PsPad, Netbeans, Code::Blocks)


http://cs.wikipedia.org/wiki/Escapov%C3%A1n%C3%AD#Entity
charlie2806
Profil
Darker:
Editor pouzivam Bluefish, ktery mi zobrazuje barevne
Uvozovky jsem nahradil apostrofem a nic
Zadne okno mi to neotevre. Chtel jsem v te mape timto pokusem najit alespon mesto a nic
Darker
Profil
charlie2806:
Editor pouzivam Bluefish, ktery mi zobrazuje barevne
Ale nebylo vám nic divné?
<a herf=""  nohref="nohref" onclick="alert("chyba")">Zdá se že zvýrazňovači tady to divné je.</a>


Budu rovněž muset sprostředkovávát chybovou konzoli?
SyntaxError: return not in function
charlie2806
Profil
Darker:
I kdyz tam adresu vlozim pro pripad ze by skript nefungoval, tak stejne se mi odkaz v javascriptu nepusti
Umite mi poradit, jak ma ten prikaz byt spravne aby fungoval ten muj konkretni pripad?
Darker
Profil
charlie2806:
Už v [#12] jsem nakopíroval chybovou hlášku kterou to hází. Když vidím, že to nestačí, pokusím se to ještě vysvětlit.
Eventy zadané jako vlastnosti HTML elementů (onclick, onmouseover, onload...) se převádějí na funkce:
function (event) {
   /*skript*/
   return;
}
Pro funkce existuje příkaz return. V samostatném skriptu nemá smysl.
skript.js
return false;
alert("never say never");  //Nevyskočí
A skript spuštěný pseudoprotokolem javascript: funguje zrovna tak.

Záměrně jsem to rozepsal a nenapsal jen "smažte return false". Když nešetříte můj čas čtením chybových hlášek, nečekejte to jednoduché.


Ještě dodám, že charlie2806 přesunul skript z onclick="/*...*/" do href="javascript:/*...*/.
charlie2806
Profil
charlie2806:
Pokud zdrzuji tak se omlouvam. Smazal jsem return false a vysledek je naprosto stejny
Omlouvam se tedy, ale javascriptu moc nerozumim
Ten presun byla jen zkouska co to udela. Ted je to zpet a stejne to nechodi

Jinak jsem samozrejme cerpal zde Nové okno
kde jsem ten return false okoukal ;-(
Darker
Profil
Takže opět vzdálená chybová konzole s výkladem:
TypeError: document.obec is undefined
Přistupování k elementům s daným ID pomocí document.id se již nepoužívá a nefunguje. Používá se namísto toho document.getElementById(id).

Do onclick příkaz return false patří. (Jak jsem očividně zcela zbytečně pospal ve [#14]).
A odkazu bych dal href="javascript:void(0)". To prostě způsobí že kliknutí nic neudělá /nepřesměruje/. Na onclick to nemá vliv, ten bude fungovat, pokud si ho opravíte.


Po opravě mi to funguje. Použil jsem ale document.forms[poradiformulare].jmenoInputu.value.
charlie2806
Profil
Darker:
Děkuji moc, už to chodí
Nikde jsem u sebe nenašel tu chybovou konzoli. Ta by opravdu pomohla


Darker:
Pokud bych Vás ještě mohl poprosit o jednu poslední věc, protože vidím že tomu zřejmě dost rozumite
Když mám 2 pole input do kterých se vloží čas ve tvaru HH:MM a potřeboval bych v javascriptu udělat rozdíl těchto 2 časů, abych zjistil třeba zda je menší nebo větší než 3 hodiny

Děkuji předem a víc už opravdu nepotřebuji
Darker
Profil
charlie2806:
Nikde jsem u sebe nenašel tu chybovou konzoli. Ta by opravdu pomohla
Firefox, Google chrome: CTRL+Shift+J
IE: F12
Opera:Ctrl+Shift+O (dragonfly se vyvolá pomocí Ctrl+Shift+I)
Pro firefox také existuje doplňek Firebug, který krom chyb zobrazuje také strukturu HTML, CSS, cookies a seznam odeslaných požadavků.

Funkce pro rozdíl času (vrací minuty)
function rozdilCasu(a,b) {
  a = a.replace(/[^0-9:]/g,"");    //Odebrání neočekávaných znaků /mezery/
  a = a.split(":");                //Rozdělení na minuty a sekundy podle znaku :
  b = b.replace(/[^0-9:]/g,"");
  b = b.split(":");
  if(a.length!=2||b.length!=2)     //Pokud text obsahoval více dvojteček - tedy byl rozdělen na více dílů
    return false;
  a=a[0]*60+1*a[1];                  //hodiny*60 + minuty = převod na minuty
  b=b[0]*60+1*b[1];
  return Math.abs(a-b);       //Vrátí rozdíl
}
Funkce se používají takhle:
var n=rozdilCasu("12:30","11:00");
alert("Rozdíl je "+n+"minut.");
charlie2806
Profil
Darker:
Mnohokráte děkuji
charlie2806
Profil
Darker:
Ještě se prosím zeptám zda ve funkci mohu volat další funkci
<script>
function kontrolaDat(vstup){
    if(vstup.CASOD.value == "" || vstup.CASDO.value == "")
        {alert("Musíte zvolit čas schůzky"); return false;}
    if(vstup.KOULICE.value == "" || vstup.KOCP.value == "" || vstup.KOOBEC.value == "")
        {alert("Adresa je neúplná. Musí být ulice,č.p. a město.\nTaké je lépe uvést PSČ pro lepší ověření v mapě"); return false;}
    if(rozdilCasu('vstup.CASDO.value','vstup.CASOD.value') < 150)
        {alert("Čas na schůzku je příliš krátký"); return false;}
    else return true;}
</script>

Takhle mi to totiž nefunguje takže zase dělám něco blbě že?
preca1
Profil
charlie2806:
Zdravim,
funkce ve funkcích volat de (alert je taky funkce). Problém je na řádku 7, kde do té funkce posíláš stále stejné stringy a ne hodnoty proměnných. Docela základní chyba, kterou si moh objevit i sám.
Vřele doporučuju se naučit s jedním z těch debugovacích nástrojů, které zmínil Darker v [#18]. Můžeš v něm jít krok po kroku ve funkci a koukat, jaký hodnoty maj jednotlivý proměnný a co se vlastně v tom scriptu děje. Dle mých zkušeností je na JS nejlepší ten v Chrom(i)u. U mě na počítači se vyvolává pomocí F12, Darker má předpokládam Mac.
charlie2806
Profil
preca1:
Moc se omlouvám, už se s tím nějak poperu
Consoli mám otevřenou, ale žádná chyba v ní uvedená není
Nebudu zdržovat, nějak už to vyřeším. Jsem v javascriptu uplný laik
Darker
Profil
preca1:
Darker má předpokládam Mac.
To předpokládáš špatně.

Dle mých zkušeností je na JS nejlepší ten v Chrom(i)u.
Když už jsme u ovlivňování, doporučuji Dragonfly v opeře a Firebug pro firefox (musí se n¨bohužel stáhnout jako doplňek).
charlie2806
Profil
Děkuji moc, nakonec jsem to podle rad rozchodil a snad se i něco naučil ;-)

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: