0

ユーザーに必要なファイル入力の数を尋ねるフォームがあり、その答えに基づいて適切な数のファイル参照入力を動的に生成したいと考えています。

これが私の試みです:

$("#howmany").change(function() 
{
    var htmlString = "";
    var len = $(this).val();
        for (var i = 0; i <= len; i++) 
        {
            htmlString += "
                    <tr>
                    <td>
                    <input name="ufile[]" type="file" id="ufile[]" size="50" />
                    </td>
                    </tr>
                    ";                      
        }
        $("#dynamic_upload").html(htmlString);
}

HTML

<input id="howmany" />

<table id="dynamic_upload"> 
</table>

入力の繰り返し「単位」は、入力された数に基づいて生成されるという考えです。

しかし、それは機能していません。どこが間違っているのでしょうか。

編集:「機能していません」(謝罪)をより明確にします。このコードを含めると、フィールド「howmany」に数字を入力した後、目に見える反応はありません。エラー メッセージは表示されませんが、読み方がわからないエラー ログはありますか? (これは初めて)

4

2 に答える 2

2

そのような文字列を作成することはできません。試す:

        htmlString += "<tr>";
        htmlString += "<td>";
        htmlString += '<input name="ufile[]" type="file" id="ufile[]" size="50" />';
        htmlString += "</td>";
        htmlString += "</tr>";

また、文字列に二重引用符が含まれている場合は、文字列を一重引用符で囲むか、エスケープする必要があることを忘れないでください。

);また、関数の最後から欠落しています:

    $("#dynamic_upload").html(htmlString);
} <--- this should be  });
于 2012-11-29T07:42:51.247 に答える
1

JavaScript文字列に改行を含めることはできません。<input>さらに、文字列内で(つまり、属性に)二重引用符を使用しています。可能な書き換え:

htmlString += '<tr><td><input name="ufile[]" type="file" id="ufile[]" size="50"></td></tr>';

将来的には、「機能していません」よりもわかりやすい問題を教えてください。たとえば、エラーメッセージが表示されますか?

于 2012-11-29T07:41:56.767 に答える