我在wicket项目中创建了一个multiuploadField对象,它允许在点击提交按钮后选择文件并提交文件。但我想在用户选择文件后自动提交表单,并在不点击提交按钮的情况下上传文件。有可能做到这一点吗?有没有任何方法可以使用onChange事件或其他任何东西来完成它。
<form wicket:id="simpleUpload">
<fieldset>
<legend>Upload form</legend>
<p>
<div wicket:id="fileInput" class="mfuex" />
</p>
<input type="submit" value="Upload!" />
</fieldset>
</form>
提前谢谢。
是的,文件输入字段必须使用AjaxFormSubmitBehavior
和change
事件。
正如我所看到的,您使用MultiFileUploadField
,所以只需添加:
fileInput.add ( new AjaxFormSubmitBehavior(form/*optional*/, 'change')
{
@Override
protected void onSubmit ( AjaxRequestTarget target )
{
super.onSubmit ( target );
}
/* you can also override other methods here,
but note that Form's submit method will
be called too.*/
} );
其中fileInput
是文件上传字段,form
是存储字段的表单。如果没有发生提交事件,那么如果您的表单有一些验证,请检查onError
方法。
请注意,每次从系统文件选择器中选择文件时,都会调用此行为。MultiFileUploadField
不允许同时选择多个文件。仅逐个添加。
要一次选择一些文件,您可以使用FileUploadField
和HTML5标记multiple
,因此在您的标记中会有以下内容:
<input wicket:id="fileInput" type="file" multiple="multiple"/>
它只适用于HTML5,对于其他版本,它只允许加载一个文件,但上面描述的提交方法也适用于此。
更新
事实上,我已经在这里为您描述了大部分内容。你应该通过接受答案或描述为什么这不能解决你的问题来做出某种反应。