在 jquery submitHandler 中从 input=file 传递值 [重复]

Posted

技术标签:

【中文标题】在 jquery submitHandler 中从 input=file 传递值 [重复]【英文标题】:pass value from input=file within a jquery submitHandler [duplicate] 【发布时间】:2017-04-04 20:39:57 【问题描述】:

我创建了一个表单,它采用某些输入字段并允许用户上传文件。表单行由用户动态添加。我已将 jquery 验证插件与我的表单一起用于验证目的

问题是我无法获取用户选择的文件。但所有其他字段都在传递。

html

<form id="upload">
<table class="dd"  id="data">

</table>
<input name="sub" type="submit"  value="Submit values"/>    <input type="button" id="addnew" name="addnew" value="Add new row" /> 

</form>

javascript

$(document).ready(function() 
    var currentItem = 1;
    $('#addnew').click(function()
        currentItem++;
        $('#items').val(currentItem);
        var strToAdd = '<tr><td>Year</td><td>:</td><td><select name="year[]"  ><option value="2012">2012</option><option value="2011">2011</option></select></td><td >Week</td><td >:</td><td ><select name="week[]" ><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option></select></td><td >&nbsp;</td><td colspan="2">&nbsp;</td></tr><tr><td>Actual</td><td>:</td><td ><input name="actual[]"  type="text" /></td><td >PDF</td> <td >: <input id="uploadfile1" name="userfile[]" accept="application/pdf" class="btn btn-next upload" type="file" required></td></tr>';
       $('#data').append(strToAdd);

    );
    $("#upload").validate(
        submitHandler: function (form)  
            $.ajax(
                url: '<?php echo base_url(); ?>/ajax_upload',
                type: 'POST',
                data: $(form).serialize(),
                success: function(data) 
                    if(data)
                        alert("success");
                     else 
                        alert("error");
                    
                ,
                error: function(data)
                    alert("error");
                ,
                cache: false,
                contentType: false,
                processData: false
            );
            return false;
        
    );
);

我做了一个测试fiddle

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

按如下方式制作表单标签

<form id="upload" action="#" method="POST" enctype="multipart/form-data" >

希望这可行

【讨论】:

【参考方案2】:

您没有在表单中使用enctype 试试

<form id="upload" action="#" method="POST" enctype="multipart/form-data">

【讨论】:

以上是关于在 jquery submitHandler 中从 input=file 传递值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

防止表单在 jQuery Validate 插件的 submitHandler 函数中提交

DirtyForms 与 jQuery Validate 的 submitHandler() 方法一起使用时无法正常工作

jQuery Validate:submitHandler 提交表单而不点击 form.submit

Jquery validate(submitHandler函数)验证通过发送Ajax

jQuery Validate SubmitHandler 与 Ajax 提交没有被击中

jQuery插件Validate验证提交表单submitHandler更改错误信息显示的位置requiredValidator内置验证方式表validate ()的可选项汇总