Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择文件后立即发布_Javascript_Html - Fatal编程技术网

Javascript 选择文件后立即发布

Javascript 选择文件后立即发布,javascript,html,Javascript,Html,我有以下HTML代码 <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> 这给了我以下的东西 我在想 如何使用JavaScript

我有以下HTML代码

<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> 
这给了我以下的东西

我在想

如何使用JavaScript,消除提交按钮的需要。也就是说,一旦我选择了文件,所选择的文件将立即上传? 如何确保显示所选文件名的字段足够长,以便。。。不会放映吗? 对于第一个:

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

不过,我不确定是否要让这个领域足够宽。有时CSS会在文件上传字段上禁用,以防止漏洞利用。

粗略猜测您想要什么-当文本字段更改时,它将触发表单提交

$('.target').change(function() {
  document.forms["myform"].submit();
});
编辑:对不起,我使用了jQuery

如果在更改时提交表单,则不会注意到字段已填充,因此不需要更改文本长度。如果您愿意,我将获取字段中字符串的字符计数,然后对输入应用size属性

mylength = document.getElementById('myfield').value
document.getElementById('myfield').size = mylength;

要立即提交,只需执行以下操作:

<input name="file_1" type="file" onchange="this.form.submit();">
关于您的其他问题:

1有很多方法。。。例如:

还有更多。只需谷歌:Ajax文件上传或iframe文件上传


2不要担心场地的宽度。因为你不知道这条路能走多久,我想永远都不会足够长。此外,浏览器可能会显示非常不同的内容。例如,Safari或Chrome显示它与Firefox或IE非常不同。只需使用默认长度或与您的设计相匹配的长度即可。

如果您不想或不需要在文件输入选择时提交整个表单,则您可以执行此操作以仅发送文件:

$document.readyfunction e{ $uploadImage.on'change',函数E{ //将文件输入附加到表单数据 var fileInput=document.getElementById'uploadImage'; var file=fileInput.files[0]; var formData=新formData; 追加'uploadImage',文件; $.ajax{ url:ajaxupload.php, 类型:POST,, 数据:formData, contentType:false, cache:false, processData:false, 成功:functiondata{ ifdata==“无效”{ //无效的文件格式。 $err.htmlInvalid文件!.fadeIn; } 否则{ //查看上传的文件。 $preview.htmldata.fadeIn; $form[0]。重置; } }, 错误:functione{ $err.htmle.fadeIn; } }; }; };
为什么要绕过“提交”按钮?而且,如果您管理1,2将不重要,因为用户在选择文件后会立即重定向。因此,一旦我不小心选择了错误的文件,它就会被上传,而我不必通过按提交按钮确认我想要上传错误的文件。一般来说,要设置文件输入样式,你必须采用将幻影透明文件输入元素放在一些伪元素上的技巧,这些伪元素看起来与你想要的一样。我这样做了那是很久以前的事了,并且后来决定,通常最好保持表单输入,因为人们会期望它们本机呈现的方式。如果您真的想这样做,这里有一个指南:您不需要onevent attributes中的javascript:prefix在ie8上失败,在提交调用时访问被拒绝。
$("input[name='file_1']").change(function() { this.form.submit(); });