Autor Zpráva
Cup
Profil
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
$('#soubor').change(function(){
  alert('zmeneno!');
});


Samozrejme to musis spoustet az kdyz je stranka nactena..

$(document).ready(function(){

  $('#soubor').change(function(){
    alert('zmeneno!');
  });

});
Cup
Profil
ShiraNai7:
No, tak musím říct, že je asi chyba jinde, pač mi to prostě nefunguje ...
Cup
Profil
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
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
svadla:
Ano, tvoje rada to vyřešila, moc ti děkuji! :) S jQuery začínám, takže díky moc :)
Cup
Profil
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
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
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
Cup:
Tá funkcia AjaxUpload sa vzala kde? Je definovaná niekde inde?
Cup
Profil
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
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
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
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
_es:
Ok, zkusím s tím ještě něco vymyslet. Díky. :)
Cup
Profil
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.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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