从动态生成的输入字段中获取数据,而不保存值 - jquery

时间:2013-11-11 04:49:30

标签: javascript jquery html html5

我通过用户输入动态生成输入字段。 我的表格没有被保存。 我必须从所有输入字段中获取值并将其填入a 下拉选择框。

此外,还有其他方法吗? 这是正确的方法吗?

3 个答案:

答案 0 :(得分:1)

这样做是解决问题的最有效方法。

$("input.className").each(function (index,element)
{
    var inputVal = $("element").val();
    $("select").append('<option>'+inputVal+'</option');
});

首先你要点击dom找到输入。

然后你使用jquery来循环输入,每次循环返回。

在“每个”通过循环时,你再次击中dom。

请看我发布的第一个答案。虽然你的方法“有效”,如果你必须在较大的方面写一些东西,这种方法将不再有效。

当你问“怎么样”时一定要问“最有效的方法是什么?”。否则你会积累很多坏习惯,这会让你无法写出任何大的东西。

答案 1 :(得分:0)

您可以将具有相同类的输入元素的值添加到select元素中,如下所示:

$("input.className").each(function (index,element)
{
    var inputVal = $("element").val();
    $("select").append('<option>'+inputVal+'</option');
});

答案 2 :(得分:0)

如果您的页面未动态生成,则应首先获取所有输入。如果它是动态生成的,那么dom节点应该已经存储在一个对象中。

假设您在页面上有多个输入节(不是动态生成的),每个节都用id:

表示
<div class="formSection" id="dropDownEntry">
    <label for="dropDown1">Drop1</label>
    <input id="dropDown1"></input>
    <label for="dropDown2">Drop1</label>
    <input id="dropDown2"></input>
</div>

现在当你去抓取字段时,你应该只做一次dom查找。因此,您获取父节点,然后指示jquery或js以获取标记为“input”的子节点。

var dropDownInputsArray = $('#dropDownEntry').find('input');

好的,现在你有一个输入数组,并且你已经将它存储在全局范围之外的函数中。不要使用$ .each。进入这是一个坏习惯,因为它很慢。我实际上从不使用它。曾经,并不难避免。迭代你的dom节点数组,并确保在init上缓存长度,如下所示:

for(i=0, len=dropDownInputsArray.length; i < len; i++){

}

但WAIT,您首先需要创建一个非全局范围的节点来存储您选择的节点,这样您就不会迭代地将内容添加到dom中。游戏的名称是“T TOUCH THE G-D DOM。”

var mySelectNode = $('<select/>');
//len caches the length so you don't have to look it up each time.  Performance ++
 for(i=0, len=dropDownInputsArray.length; i < len; i++){
      var inputNodeVal = dropDownInputsArray[i].value;
      if(inputNodeVal.length > 0) //was anything entered there?
        mySelectNode.append($('<option/>', {
                   value: inputNodeVal,
                   text: inputNodeval
               }));
 }

//now append your mySelectNode to the dom or replace the previous select node with it.  We did it this way because before you actually attach a node to the dom you have stayed in javascript land which is 'cheaper' than touching dom-land.