Autor | Zpráva | ||
---|---|---|---|
Cup Profil |
#1 · Zasláno: 14. 1. 2011, 09:39:59
Otázka v titulku.
příklad ... <input type="file" id="soubor"> ------------ jQuery $("#soubor").change() ... mi buď nefunguje, nebo nevím jak to zapsat, když chci aby to hodilo nějaký alert. |
||
ShiraNai7 Profil |
#2 · Zasláno: 14. 1. 2011, 14:17:30
$('#soubor').change(function(){ alert('zmeneno!'); }); Samozrejme to musis spoustet az kdyz je stranka nactena.. $(document).ready(function(){ $('#soubor').change(function(){ alert('zmeneno!'); }); }); |
||
Cup Profil |
#3 · Zasláno: 14. 1. 2011, 20:09:24
ShiraNai7:
No, tak musím říct, že je asi chyba jinde, pač mi to prostě nefunguje ... |
||
Cup Profil |
#4 · Zasláno: 14. 1. 2011, 20:14:00
ale je to divný, když ten kousek javascriptu vytáhnu z js.souboru který mám pro celý web a přidám ho mezi <script> </script> za ten kousek generovaného kódu, tak to normálně funguje! ... (ten kód si pomocí ajaxu volám do divu, na stránce.)
No zkusím to ještě nějak pořešit, už vím že to funguje, takže teď to jen zkompletovat. Díky |
||
svadla Profil |
#5 · Zasláno: 14. 1. 2011, 20:49:25 · Upravil/a: svadla
Pokud jsem správně pochopil, že ten input vkládáš do stránky pomocí Ajaxu, tak na něj událost musíš přidat pomocí live. Kód by tedy mohl vypadat takto:
$('#soubor').live('change', function() { alert('zmeneno'); }); Error console nehlásí nějakou JS chybu? |
||
Cup Profil |
#6 · Zasláno: 14. 1. 2011, 20:57:29
svadla:
Ano, tvoje rada to vyřešila, moc ti děkuji! :) S jQuery začínám, takže díky moc :) |
||
Cup Profil |
#7 · Zasláno: 14. 1. 2011, 21:05:35 · Upravil/a: Cup
Hele ještě jedna věc ... konkrétní přikad
$(document).ready(function(){ $('#imgUpload').live('change', function() { alert('zmeneno'); new AjaxUpload('imgUpload', { action: '../tool/upload-test.php', data : { 'key1' : "This data won't", 'key2' : "be send because", 'key3' : "we will overwrite it" }, onSubmit: function(file, ext){ // Allow only images. You should add security check on the server-side. if (ext && /^(jpg|png|jpeg|gif)$/i.test(ext)) { this.setData({ 'key1': 'This should be alerted', 'key2': '...' }); } else { alert('not image'); return false; } }, onComplete: function(file, response){ alert(response); } }); alert('end'); }); //end ready }); změněno i end se zavolá ... samotná třída pro upload ne, není tam zas nějaká vychytávka ? :) konzole nic nehlásí... |
||
svadla Profil |
#8 · Zasláno: 14. 1. 2011, 21:14:32
AjaxUpload neznám, takže těžko soudit. Cesta k souboru je správně? Vyzkoušej jestli se ten soubor zavolá (třeba zápisem dat do souboru).
Toto se také zavolá? onComplete: function(file, response){ alert('onComlete'); alert(response); } |
||
Cup Profil |
#9 · Zasláno: 14. 1. 2011, 21:21:53
No hele, mě ta třída normálně funguje, když ji zavolám pomocí onchange="nejakafukce()" na tom inputu, tak se mi upload souboru normálně provede. Funguje, o to nejde. Ale prostě když to chci volat pomocí
$('#soubor').live('change', function() { alert('zmeneno');// toto se provede // js kod tridy // ta nic neudělá }); to znamená bez onchangee="" Tak se prostě nezavolá. Ale ono je to celkem jedno ne? když to budu volat pomocí onchange na inputu, tak je to prakticky to samé. Nebo se mílím? |
||
_es Profil |
#10 · Zasláno: 14. 1. 2011, 21:23:24
Cup:
Tá funkcia AjaxUpload sa vzala kde? Je definovaná niekde inde?
|
||
Cup Profil |
#11 · Zasláno: 14. 1. 2011, 21:25:58 · Upravil/a: Cup
je "includovaná" na indexu
<script type="text/javascript" src="/javascript/ajaxUpload.js"></script> div je ze kterého je volána, je vložen pomocí ajaxu |
||
_es Profil |
#12 · Zasláno: 14. 1. 2011, 21:30:04
Cup:
„div je ze kterého je volána, je vložen pomocí ajaxu“ To neznie ako dobrý nápad. Skús to spraviť inak. |
||
Cup Profil |
#13 · Zasláno: 14. 1. 2011, 21:36:05
Nevím jak, rád bych to udělal právě tak. Mám odkaz "přidat fotografie" .. když na něj kliku vyskočí mi okno, do něj se ajaxem nahraje formlulář ze serveru (vyskakují různá okna, pro přidávání různých věcí, většinou ale textu) A já chci aby se při výběru obrázku, automaticky nahrál na web. Když tu tu knihovnu na input zavolám pomocí onchange="jsNaUploadSouboru()" ... tak to normálně funguje. Když to chci provést pomocí jQuery, tak ne. Nejjednodušíí řešení je se v tomto případě na jQuery vykašlat a udělat to tak, jak to funguje. Já chtěl ale už jen z pouhé zvědavosti zjistit "proč" to nefunguje.
svadla: mi poradil že když to tahám ajaxem tak nemohu použít pouze .change ale musím to udělat takto. $('#soubor').live('change', function() { alert('zmeneno'); }); což mi ukázalo že to normálně funguje, pač ten alert se vypsal. Ale samotná třída nereaguje. :) Pokud to je problém, tak se na to vykašlu a udělám to tak, jak mi to funguje. Jen mě to zajímalo. _es: Proč myslíš že to není dobrý nápad? |
||
_es Profil |
#14 · Zasláno: 14. 1. 2011, 21:45:16 · Upravil/a: _es
Cup:
„mi poradil že když to tahám ajaxem tak nemohu použít pouze .change“ Tak priraď tú udalosť nejakému nadradenému elementu. Alebo priraď udalosť až vtedy, keď ten element bude pridaný. Nemôžeš priradiť udalosť k neexistujúcemu elementu. „což mi ukázalo že to normálně funguje, pač ten alert se vypsal. Ale samotná třída nereaguje. :)“ Z toho vyplýva, že bude asi nejaká chyba v tej „triede“. JavaScript triedy nemá, je to funkcia, ak si myslel funkciu AjaxUpload ,
„Proč myslíš že to není dobrý nápad?“ Ak som ťa správne pochopil, tak pomocou AJAXu vkladáš aj JS kód? Myslel som tým to, že to nie je dobrý nápad. |
||
Cup Profil |
#15 · Zasláno: 14. 1. 2011, 21:47:50
_es:
Ok, zkusím s tím ještě něco vymyslet. Díky. :) |
||
Cup Profil |
#16 · Zasláno: 14. 1. 2011, 22:00:03
Tak mi to funguje, ale je to zajímavé. Když vyberu do inputu soubor, tak se nic nestane. Když ho vyberu po druhé, tak se odešle. Nechápu. Ale bude to nějaká kulišárna.
|
||
Časová prodleva: 13 let
|
0