动态添加更多文本字段MVC视图

时间:2014-05-12 16:45:14

标签: javascript jquery asp.net-mvc forms

我正在尝试发布here的内容,但在我的情况下,由于MVC视图在呈现时有多个表单标记,因此我必须稍微修改它。我需要“文件”框,可以调用与现有文件输入相同的名称。我可能还需要为每个新盒子添加新的名称和描述,但是目前还没有这么做。

我的观点:

<div id="dialog1" title="Upload Multiple Files">
<% using (Html.BeginForm("MyAction", "MyController", new { path = Model.FullPath }, FormMethod.Post, new { enctype = "multipart/form-data", id = "uploadsfrm" }))
   {%>
<p>
    <input type="file" id="file1" name="fileUpload" size="23" />
</p>   
<p>
    Title</p>
<input type="text" id="Text1" name="txtNiceName" style="width: 100%;"/>
<p>
    Description</p>
<input type="text" id="Text2" name="txtDescription" style="width: 100%;"/>

<INPUT type="button" value="Add" onclick="addbox('file')"/>
<span id="addBoxes">&nbsp;</span>
<p>
    <input type="submit" value="Upload file" /></p>  
  <% } %>
 </div>

脚本:

 function addbox(type) {

    var element = $("#uploadsfrm").createElement("input");
    element.setAttribute("type", type);
    element.setAttribute("value", type);
    element.setAttribute("name", type);

    var foo = $("#uploadsfrm").getElementById("addBoxes");

    foo.appendChild(element);

}

点击添加按钮后,我在Firebug中遇到的错误说:  “TypeError:$(...)。createElement不是函数”

有人可以解释一下吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

您正在使用jQuery

jQuery不包含.createElement()函数。 这就是为什么你会得到这个错误。

如果你想用jQuery创建一个新元素,你只需要执行$函数,并使用元素标记作为参数。

var element = $("<input>")`//in this example, we create a new input.

如果你想将这个元素附加到另一个元素,你只需执行.append()函数,如:

$("#uploadsfrm").append(elememt);

您还可以使用$功能定义属性。

示例:

function create(){
   //new Input stored in element
   var element = $("<input>",{
       //your Attributes
       name:"theInputName",
       placeholder: "yourPlaceholder"       
   });
   //appending your New input
   $("#yourAppendID").append(element);
}