将输入元素附加到表单的正确方法

时间:2016-03-31 20:12:44

标签: javascript jquery

到目前为止,我需要动态地向表单添加输入:

Dim tmpAddress as String

tmpAddress = "A2:BZ" & Worksheets("Sheet2").UsedRange.Rows.Count

Worksheets("Sheet2").Activate
Worksheets("Sheet2").Range(tmpAddress).RemoveDuplicates Columns:=15, Header:=xlNo 

我知道有更好的方法。我读过有关setAttribute或.attr()的内容。我该如何开始?

def wrap(f,n):
        fi=open(f,"w+")
        rl=fi.readlines()    
        for i in range(0,len(rl)):
            if len(rl[i]) > n:
                fi.write(rl[i][:n] +"\n" + rl[i][n:])
                fi.Close()
            else:
                fi.write(rl[i])
                fi.close()

5 个答案:

答案 0 :(得分:1)

是的,存在更好的方法,

 $('#form').append($("<input>",{
   "type" : "text",
   "id" : "someId",
   "name" : "someName",
   "value" : "someValue"
 }));

不要将纯jquery与javascript混淆。这有时会导致错误。比如在节点对象上调用jquery函数。例如:node.css(...)

答案 1 :(得分:0)

当我需要动态添加元素时,我会执行以下操作:

var $_form = $("#form");
$("<input/>",{ id : "input_1",type : "text", val : "value" }).addClass("class1 class2").appendTo($_form);

此表单适用于任何元素,而不仅仅是表单字段。

答案 2 :(得分:0)

为简洁起见,您可以在一行中执行以下操作:

$('#form').append("<input type='text' id='someId' name='someName' value='someValue'>");

但是对于更复杂的情况,您可以采用更长的方法:

$("<input/>", {
    attributes
});

答案 3 :(得分:0)

您可以使用JavaScript createElement()setAttribute()执行此操作,如下所示:

var input = document.createElement("input");
input.setAttribute("type", "text");
//and so on

答案 4 :(得分:0)

正如@scottmarcus指出的那样,这不一定更好但是不同。它是您正在寻找的:

var input = document.createElement("INPUT");

哪个是DOM元素;所以你不能使用.attr()之类的jQuery方法。您必须使用setAttribute()之类的JavaScript方法。为了使用jQuery方法,您所要做的就是将输入包装在$中,如下所示:

var input = $( document.createElement("INPUT") );

更好的方法是:

var input = $('<input/>');

参考:https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement