2011-01-19 52 views
20

我有以下这给了我下面的东西HTML代码POST立即选择后一个文件

<form action="/script/upload_key.py" method="POST" enctype="multipart/form-data"> 
    Key filename: <input name="file_1" type="file"> 
    <input name="submit" type="submit"> 
</form> 

alt text

我想知道

  1. 我如何使用JavaScript,以便消除Submit按钮的需要。这意味着,一旦我Choose File,选定的文件将立即上传?
  2. 如何确保显示所选文件名的字段足够长,以便...不会显示?
+1

为什么要跳过提交按钮?而且,如果您管理#1,则#2无关紧要,因为用户在选择文件后将立即重定向。 – 2011-01-19 00:51:58

+1

因此,只要我不小心挑选了错误的文件,它就会上传,而我不必确认是否需要按提交按钮上传错误的文件。 – 2011-01-19 01:01:59

回答

35

要立即提交,只是这样做:

<input name="file_1" type="file" onchange="this.form.submit();"> 

如果您正在使用JQuery:

$("input[name='file_1']").change(function() { this.form.submit(); }); 

关于您的其他问题:

1)有许多方法虽然不在这里......例如:

http://valums.com/ajax-upload/

http://www.webtoolkit.info/ajax-file-upload.html

(以及更多。只是谷歌为:“Ajax文件上传”或“iframe文件上传”)

2)不要担心字段的宽度。因为你不知道这条路有多长,它永远不会足够长(我认为)。另外浏览器可能会显示非常不同的内容。例如Safari或Chrome显示它与Firefox或IE非常不同。只需使用默认长度或使用您的设计看起来更好的长度。

2

对于第一种:

<input name="file_1" type="file" onchange="this.form.submit()"> 

我不知道制作领域足够宽不过。有时候,CSS会在文件上传字段中瘫痪,以防止利用漏洞。

+0

一般来说,对于样式文件输入,您必须使用将幻像透明文件输入元素放置在某些虚拟元素上的技巧,这些虚拟元素会以您希望的方式显示。 – Pointy 2011-01-19 00:52:54

0

粗略估计你想要的东西 - 当文本字段变化,它会触发表单提交

$('.target').change(function() { 
    document.forms["myform"].submit(); 
}); 

编辑:对不起,我已经使用jQuery的...

如果您提交表单onchange,你不会注意到该字段被填充,因此不需要改变文本长度。如果你希望,我会得到字符串的字符数的字段,然后申请一个大小属性来输入

mylength = document.getElementById('myfield').value 
document.getElementById('myfield').size = mylength; 
相关问题