【发布时间】:2010-09-02 19:31:44
【问题描述】:
它可以在所有其他浏览器上运行,之前也可以在 IE8 上运行,但我做了一些代码清理并移动了一些东西,现在它把这个表单提交给它自己。这是一个“ajax”上传器(是的,不是真正的 ajax,但你知道我的意思)
这里是 JS:
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
$('.agenda-modal .file_upload').live('submit',function(event){de
file_upload($('.agenda-modal .file_upload'),$('.agenda-modal').attr('data-defaultitemid'));
});
如果您不知道,ACTION 必须大写才能使 Firefox 正常工作。另外,我确定它正在提交给它自己,因为 iframe 在它自己的内部显示当前页面,并且所有脚本都会再次加载。另外,在.live() 中,添加return false; 没有任何作用。
这是 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 />
<iframe class="upload_target" name="upload_target" src="" style="display:none"></iframe>
</form>
<label>Attachments</label>
<ul class="upload_output">
<li class="nofiles">(No Files Added, Yet)</li>
</ul>
【问题讨论】:
-
相关页面是否包含 BASE 标签?
-
对于 Firefox,实际上不需要大写“action”属性的名称,一个简单的测试页面可以证明。
-
不,它没有基本标签。对于动态变化的动作,它必须大写。我为此奋斗了好几天,而stackoverflow上的某个人实际上指出您必须将其大写。
-
@Pointy 是正确的 -
action对于 firefox 不需要是特殊的,您可以在此处使用 firebug 进行测试:jsfiddle.net/nick_craver/YGuhN -
这里:stackoverflow.com/questions/3400816/… 那不是动态添加的表单...
标签: javascript jquery ajax iframe file-upload