当我在输入字段中选择文件时,我正在使用jquery文件上传插件上传我的文件。
我想要一个上传文件的cusom提交按钮..
我该怎么做?
标记:
<span>Add File</span>
<input id="fileupload" type="file" multiple="" data-url="upload.ashx" name="files[]" />
<label for="file_name">Name:</label>
<input type="text" name="file_name" id="file_name" />
<input type="button" id="uploadFileBtn" value="Upload" />
Javascript:
$('#fileupload').fileupload(
{
dataType: 'json',
done: function (e, data) {
alert("success");
}
});
答案 0 :(得分:0)
您的输入是否在同一表格中?
更改代码:
<form id="fileupload" action="someAction" method="POST" enctype="multipart/form-data">
<span>Add files</span>
<input type="file" name="files[]" multiple>
<button type="submit" class="btn btn-primary start">
<span>Start upload</span>
</button>
</form>
答案 1 :(得分:0)
<强>解决方案强>
fileupload有一个ADD事件,一旦选择了文件就会触发。我在ADD事件中编写了click事件,从而覆盖了默认行为。
经过测试,它按预期工作。
解决方案2 - Jquery表单插件
经过一番研究后,我找到了一种更好的方法来处理ajax fileupload。我使用的是Jquery Form Plugin:http://www.malsup.com/jquery/form/
它就像常规表单一样,可以处理文件输入。
答案 2 :(得分:0)
您可以通过挂钩添加事件来实现。在那里,您可以阻止上传者执行其默认行为。 jquery-file-upload -docs解释了这一点,但它有点难以找到。
以下内容写于blueimp basic uploader tutorial:
$(function () {
$('#fileupload').fileupload({
dataType: 'json',
add: function (e, data) {
data.context = $('<button/>').text('Upload')
.appendTo(document.body)
.click(function () {
data.context = $('<p/>').text('Uploading...').replaceAll($(this));
data.submit();
});
},
done: function (e, data) {
data.context.text('Upload finished.');
}
});
});
实际上非常重要的是,您创建的提交按钮不在表单内!