Donc, c'est étrange, et cela a fonctionné pour moi il y a environ un mois, avant que je fasse un tas de mises à jour de code. De toute façon, le problème est le gestionnaire de soumission en direct ne fonctionnera même pas dans IE8, cependant, si je l'exécute sur un clic de bouton, cela fonctionne. Voir ci-dessous:IE8 soumet seulement avec le bouton, ne pas soumettre?
HTML
<label>Add Attachment</label>
<form class="file_upload" method="post" enctype="multipart/form-data" target="upload_target" action="">
<input name="binary" id="file" size="27" type="file" /><br />
<br><input type="submit" name="action" value="Upload" /><br />
<input type="button" class="test" value="test">
<iframe class="upload_target" name="upload_target" src="" style=""></iframe>
</form>
<label>Attachments</label>
<ul class="upload_output">
<li class="nofiles">(No Files Added, Yet)</li>
</ul>
JavaScript:
function file_upload($theform,item_id){
$theform.attr('ACTION','io.cfm?action=updateitemfile&item_id='+item_id);
if($theform.find('[type=file]').val().length > 0){
$('iframe').one('load',function(){
$livepreview.agenda({
action:'get',
id:item_id,
type:'item',
callback:function(json){
$theform.siblings('.upload_output').append('<li style="display:none" class="file-upload"><a target="blank" href="io.cfm?action=getitemfile&item_file_id='+json[0].files.slice(-1)[0].item_file_id+'">'+json[0].files.slice(-1)[0].file_name+'</a> <a style="color:red" title="Delete file?" href="#deletefile-'+json[0].files.slice(-1)[0].item_file_id+'">[X]</a></li>').children('li').fadeIn();
$theform.siblings('.upload_output').find('.nofiles').remove();
}
});
//Resets the file input. The only way to get it cross browser compatible as resetting the val to nothing
//Doesn't work in IE8. It ignores val('') to reset it.
$theform.append('<input type="reset" style="display:none">').children('[type=reset]').click().remove();
});
}
else{
$.alert('No file selected');
return false;
}
}
/* FILE UPLOAD EVENTS */
//When they select "upload" in the modal
$('.file_upload').live('submit',function(event){
alert('hello world');
file_upload($('.agenda-modal .file_upload'),$('.agenda-modal').attr('data-defaultitemid'));
});
/* This is the code that makes it work..., but i dont want it! it should alert hello world on the submit button! */
$('.test').live('click',function(event){
$('.file_upload').submit();
});
Juste une petite vérification rapide - toutes les URL sont-elles servies par le même domaine? ie8 a apporté de meilleurs XSS-defenses donc la même politique d'origine peut être plus strictement appliquée ... – Basic
Ouais :(c'est tout le même domaine ... Et comme je l'ai dit, ça fonctionne quand vous appuyez sur le bouton, mais pas le soumettre –