如何在新行中添加输入类型“文件”?

时间:2011-12-27 15:09:23

标签: javascript jquery dom

当用户在表格中添加行时,它应在每个行的“图像”列下显示输入“文件”功能,以便用户可以为每行选择一个文件。但是当我添加一行时,它不会在行中显示文件输入。

以下是html代码:

   <table id="qandatbl" border="1">
    <tr>
        <th class="image">Image</th>
    </tr>
    </table>

下面是jquery代码

function insertQuestion(form) {   

        var $tr = $("<tr></tr>");
        var $image = $("<td class='image'></td>");

        function image(){

        var $this = $(this);
        var $imagefile = $("<input type='file' name='imageFile' id='imageFile' />").attr('name',$this.attr('name'))
                         .attr('value',$this.val())

            $image.append($imagefile);

        };

        $tr.append($image);
        $('#qandatbl').append($tr);


    }

3 个答案:

答案 0 :(得分:2)

我没有看到任何地方对内部函数image()的调用。更多关于为什么你有这样的内在功能?修复这很可能会解决您的问题。

答案 1 :(得分:1)

这样的事情,但我的问题是,this是什么?由于您当前生成的函数未在以后的任何操作中使用,因此我当前删除了该函数,但无法确定$(this).val()将导致的结果。

你还传递form参数但不使用它吗?

 function insertQuestion(form) {   

    var $tr = $("<tr></tr>");
    var $image = $("<td class='image'></td>");


    var $imagefile = $("<input type='file' name='imageFile' id='imageFile' />").attr('name',$this.attr('name'))
                     .attr('value',$(this).val())
                     .appendTo($image);


    $tr.append($image);
    $('#qandatbl').append($tr);

}

答案 2 :(得分:0)

您当前的代码段看起来很混乱。试试这个:http://jsfiddle.net/66qAR/

<form id="idOfTheForm" action="?" method="post"> 
<table border="1">
    <tr>
        <th class="image">Image</th>
    </tr>
</table>
</form>

这个javascript:

function insertQuestion(form) {
    var imageField = $('<input />')
        .attr({
            type: 'file',
            name: 'imageFile',
            id: 'imageFile'
        });
    $(form).find('table').append($('<tr />').append(imageField));
}
insertQuestion($('#idOfTheForm'));