Autor | Zpráva | ||
---|---|---|---|
cenek Profil |
#1 · Zasláno: 12. 2. 2013, 19:50:27
Ahoj,
S JS si hraju pomerne chvili ale ted jsem v koncich a at googim jak googlim, nemuzu to najit. Mam ve formulari pole headline. Pomocí JS jsem do dalšího inputu "obtisknul" cool url z výrazu headline. Pro příklad: Do pole headline zadám "Bude pršet" a inputu coolurl se mi objeví "bude-prset". To funguje. Jenže o pár řádek níže posílám (na té samé stránce v tom samém formuláři) nějaká data přes ajax do jiného souboru s php a já tam do jedné var potřebuju dostat hodnotu co je právě v tom coolurl var coolurl = document.getElementById('coolurl').value; ale protože tam ta hodnota není napevno a objeví se vlastně až v průběhu vyplňování toho formuláře, proměnná je prázdná. Neví někdo jak se to dá řešit? Díky |
||
Monkeys Profil * |
#2 · Zasláno: 12. 2. 2013, 20:00:30
cenek:
if($(coolurl).empty()){ // nieco vykonaj }else{ /nieco vykonaj } M. |
||
_es Profil |
cenek:
Akosi nechápem, v čom spočíva problém. Tak teda tú hodnotu prečítaj až vtedy, keď je v v inpute s id=coolurl to, čo tam má byť. Alebo, odkiaľ pochádza hodnota do toho inputu vkladaná? - Použi hodnotu odtiaľ.
|
||
cenek Profil |
#4 · Zasláno: 12. 2. 2013, 20:08:44 · Upravil/a: cenek
_es:
Potřebuju aby když se hodnota z headline objeví v coolurl (coz je realtime, bez submitu, tudiz nemuzu pouzit PHP jak rika Monkeys) aby se rovnou "prdla" i do var coolurl v JS niz Takto se mi objeví v inputu coolurl <script type="text/javascript"> var nodiac = { 'á': 'a', 'č': 'c', 'ď': 'd', 'é': 'e', 'ě':'e', 'í': 'i', 'ň': 'n', 'ó': 'o', 'ř': 'r', 'š': 's', 'ť': 't', 'ú': 'u', 'ů': 'u', 'ý': 'y', 'ž': 'z' }; function make_url(s) { s = s.toLowerCase(); var s2 = ''; for (var i=0; i < s.length; i++) { s2 += (typeof nodiac[s.charAt(i)] != 'undefined' ? nodiac[s.charAt(i)] : s.charAt(i)); } return s2.replace(/[^a-z0-9_]+/g, '-').replace(/^-|-$/g, ''); } function prevod() {document.getElementById("coolurl").value=make_url(document.getElementById("headline").value);} </script> <input type="text" name="headline" id="headline" onkeyup="prevod()" /> <input type="text" name="coolurl" id="coolurl" /> |
||
_es Profil |
cenek:
Stále nerozumiem: var coolurl = document.getElementById('coolurl').value; No kedy a ako tú hodnotu zisťuješ? Tak ju teda zisťuj, keď ten input nie je prázdny. Asi máš len nejako chaos v tom, kedy sa ti aké kroky vykonajú. Alebo prečo nepoužiješ hodnotu z inputu s id=headline a funkciu make_url namiesto hodnoty z inputu s id=coolurl na to odoslanie „nějakých dat přes ajax do jiného souboru s php“? A tá definícia premennej coolurl je kde?
|
||
cenek Profil |
#6 · Zasláno: 12. 2. 2013, 21:26:56
_es:
var coolurl = document.getElementById('coolurl').value; Jenže moje stránka se načte s prázdným formulářem. Lepší bude, když zapomene na input id='coolurl'. Řekněme že vyplním jen input id='headline' a a potřebuji aby ve chvíli kdy ho vyplnim se hodnota value tohoto pole projevila v JS var ještě před odesláním / zpracováním formuláře |
||
_es Profil |
#7 · Zasláno: 12. 2. 2013, 21:41:03
cenek:
Vyrob „živú“ ukážku, lebo z tvojho popisu problému sa asi nikto „nevysomári“. „se hodnota value tohoto pole projevila v JS var“ To má byť čo, to „prejavenie sa v JS var“? Ak v tom inpute nejaký text je, tak môžem zistiť aký. Zrejme zisťuješ hodnotu z toho inputu vtedy, keď v ňom text nie je. |
||
cenek Profil |
#8 · Zasláno: 13. 2. 2013, 00:37:56
Zkusím to popsat na zjednodušeném kódu, který by měl stačit, protože jsem to možná na začátku tohoto tématu zbytečně komplikoval. Kdyžtak zítra udělám nějakou živou ukázku.
Takže teoreticky: <form> <input type="text" name="headline" id="headline" value="sem potřebuji dostat text zadaný do tohoto inputu" /> <script> var headline=$('#headline').val(); // Tímto dostanu hodnotu z inputu headline .......... //zbytek skriptu </script> <input type="submit" value="submit"/> </form> Takže vlastně potřebuji najít způsob jak v realném čase bez načítání stránky dostat hodnotu, kterou napíšu do inputu headline do value tohoto samého inputu a tím pádem i do js |
||
_es Profil |
cenek:
<form onsubmit='Tu zadaj nejaký kód pracujúci s výrazom make_url(document.getElementById("headline").value)' „Do pole headline zadám "Bude pršet" a inputu coolurl se mi objeví "bude-prset".“ Prečo? Na čo to je návštevníkovi? Čo ak sa do inputu zadajú nejaké exotickejšie znaky? Nepotrebuješ skôr funkciu encodeURIComponent?
„Tímto dostanu hodnotu z inputu headline“ ... v čase vytvárania stránky - teda ti to je na nič. Potrebuješ získať jeho hodnotu v inom čase. Ten formulár je odoslaný ako? Ako normálny formulár, či nejakou JS náhradou? Alebo, prečo vlastne nepracuješ s hodnotou z inputu s name=headline až na serveri?
Nejako moceš jedno cez druhé a vkladáš tu nejaké vzájomne nekompatibilné kódy: „kterou napíšu do inputu headline do value tohoto samého inputu a tím pádem i do js“ Teda doteraz si písal o dvoch inputoch a zrazu je z nich len jeden? Bez „živej“ ukážky nemá zmysel na to viac reagovať. |
||
cenek Profil |
#10 · Zasláno: 13. 2. 2013, 11:33:28
Přiznávám, že jsem to na začátku mohl napsat jednodušeji. Pole coolurl zapomeňte, je tam proto, že když se zadá název položky, vytvoří se tak rovnou unikátní identifikátor pro danou položku (samozřejmě přes ajax nejdřív kontroluji jeho unikátnost), návštěvníkovi je k ničemu, může být schovaný. To funguje, proto zrazu zmiňuji jen jeden.
Fomulář se zpracovává klasicky. Zkusím to ještě vysvětlit jinak. Po lopatě. Mám formulář. Do tohoto formuláře uživatel zadává položky. V průběhu tohoto formuláře uživatel zadává fotografie, keteré se ještě před odesláním celého formuláře přes ajax nahrávají na server a ukládají do tabulky 'photos'. to taky funguje. Ale potřebuju aby se do té tabulky photos uložil i zmiňovaný identifikátor, proto ho potřebuji dostat "real-time" z toho pole právě do skriptu s ajaxem. A až poté celý formulář odeslat ke zpracování na server. Ale to jen tak pro informaci, budu radši hledat jiné řešení |
||
_es Profil |
cenek:
„Pole coolurl zapomeňte, je tam proto, že když se zadá název položky, vytvoří se tak rovnou unikátní identifikátor pro danou položku (samozřejmě přes ajax nejdřív kontroluji jeho unikátnost), návštěvníkovi je k ničemu, může být schovaný.“ A na čo tam vôbec to „pole coolurl“ je? Veď stačí normálne odoslať na server to, čo návštevník napíše. „fotografie, keteré se ještě před odesláním celého formuláře přes ajax nahrávají na server“ AJAX, respektíve to, čo je pod tým obvykle myslené - objekt XMLHttpRequest , neumožňuje nahrávať súbory. Súbory sa odosielavajú normálne cez formulár, prípadne cez nejaké rozšírenia prehrávača.
„proto ho potřebuji dostat "real-time"“ Ako „real-time“? Výraz objektInputu.value obsahuje hodnotu toho inputu. Akú inú „real-time“ hodnotu by si ešte chcel? Samozrejme ju musíš zisťovať v správnom čase a nie ako v [#8].
|
||
pcmanik Profil |
_es:
objekt XMLHttpRequest, neumožňuje nahrávať súbory Špecifikácia XMLHttpRequest 2 už umožnuje nahrávať aj súbory a podpora je už na celkom slušnej úrovni, samozrejme bez IE < 10 |
||
_es Profil |
#13 · Zasláno: 14. 2. 2013, 09:34:17
pcmanik:
Čiže je tá podpora nedostatočná. Okrem toho ide v tomto vlákne o iný problém a o to, že ho cenek dostatočne neobjasnil. |
||
peta Profil |
cenek:
Pouzij iframe ajax. Do iframe das formular pro zadani souboru. Uzivatel si ho vyklika pres browse (prochazet). Ty mu pak ten formular odesles, on se obnovi a pri obnove pomoci php vygeneruje javascript typu <script>parent.document.form[0].prom.value = 1234;</script> (pomoci js prepises v parent okne value inputu prom formulare form[0]).
" fotografie, keteré se ještě před odesláním celého formuláře přes ajax nahrávají na server a ukládají do tabulky 'photos'. to taky funguje." To mi neni jasne. Kdyz je ajaxem nahrajes, tak ajaxem muzes navratit i hodnotu. Takze, pokud ti to funguje tam, tak cesta zpet je preci jen spustit funkci na ajax.response. Cili, vygooglovat si vic o tve funkci, kterou pouzivas na ajax. Moznosti je vic. Z toho, co pises, neni jasne, zda pouzivas XMLHttpRequest nebo neco jineho. Mozna fakt tu live ukazku. |
||
Časová prodleva: 11 let
|
0