Javascript 如何处理动态创建的文本输入值?

Javascript 如何处理动态创建的文本输入值?,javascript,jquery,dynamic,input,Javascript,Jquery,Dynamic,Input,这里有一个 质量 对于(变量i=1;i

这里有一个


质量
对于(变量i=1;i<81;i++){
文件。写(“+i+”);
};
下一个
$(“#下一步”)。单击(函数(){
变量数量=($('select[name=quantity]')。val();
$('#itemform').html(“”);
对于(变量i=0;i
itemprice

”; }; $('#itemform')。追加(“提交”); }); $(“#提交”)。单击(函数(){ var item={}; $('input[type=text]')。每个(函数(){ var key=$(this.attr('name'); var值=$(this.val(); 项[键]=值; }); console.log(项目) });
它创建的文本输入数量与所选数量相同

然后,它使对象像{itemname1:“一件很棒的事情”,…}

创建输入效果很好,但不能创建对象


$(“#提交”)。单击(函数(){ var item={}; $('input[type=text]')。每个(函数(){ var key=$(this.attr('name'); var值=$(this.val(); 项[键]=值; }); console.log(项目) });
为什么它不能像我预期的那样工作?

$(“#提交”)
在您的示例中不存在。我将其替换为
$('#itemform').submit()
,它似乎记录了一个巨大的对象。请参阅更新的jfiddle

此外,如果您希望改进项目的存储方式,我再次更新了JSFIDLE,向您展示如何对项目进行分组:

$(document).ready(function() {
    $('#next').click(function(){
        var quantity = ($('select[name=quantity]').val());
        $('#itemform').html("");
        for (var i = 0; i < quantity; i++) {
            $('#itemform').append("<div class='item' data-item='" + i + "'><label for='itemname"+i+"'>itemname</label><br><input type='text' name='name' id='itemname"+i+"'><br><label for='itemprice"+i+"'>itemprice</label><br><input type='text' name='price' id='itemprice"+i+"'><br><br></div>");
        };
        $('#itemform').append("<button id='submit'>submit</button>");
    });
    $('#itemform').submit(function(e){
        e.preventDefault();

        var items = {};
        $('#itemform div.item').each(function(){

            var item = {};
            $(this).find('input[type=text]').each(function() {     
                var key = $(this).attr('name');
                var value = $(this).val();
                item [key] = value;
            });
            items[$(this).data('item')] = item;
        });
        console.log(items)
    });
});
$(“#提交”)
在您的示例中不存在。我将其替换为
$('#itemform').submit()
,它似乎记录了一个巨大的对象。请参阅更新的jfiddle

此外,如果您希望改进项目的存储方式,我再次更新了JSFIDLE,向您展示如何对项目进行分组:

$(document).ready(function() {
    $('#next').click(function(){
        var quantity = ($('select[name=quantity]').val());
        $('#itemform').html("");
        for (var i = 0; i < quantity; i++) {
            $('#itemform').append("<div class='item' data-item='" + i + "'><label for='itemname"+i+"'>itemname</label><br><input type='text' name='name' id='itemname"+i+"'><br><label for='itemprice"+i+"'>itemprice</label><br><input type='text' name='price' id='itemprice"+i+"'><br><br></div>");
        };
        $('#itemform').append("<button id='submit'>submit</button>");
    });
    $('#itemform').submit(function(e){
        e.preventDefault();

        var items = {};
        $('#itemform div.item').each(function(){

            var item = {};
            $(this).find('input[type=text]').each(function() {     
                var key = $(this).attr('name');
                var value = $(this).val();
                item [key] = value;
            });
            items[$(this).data('item')] = item;
        });
        console.log(items)
    });
});
$(“#提交”)
在您的示例中不存在。我将其替换为
$('#itemform').submit()
,它似乎记录了一个巨大的对象。请参阅更新的jfiddle

此外,如果您希望改进项目的存储方式,我再次更新了JSFIDLE,向您展示如何对项目进行分组:

$(document).ready(function() {
    $('#next').click(function(){
        var quantity = ($('select[name=quantity]').val());
        $('#itemform').html("");
        for (var i = 0; i < quantity; i++) {
            $('#itemform').append("<div class='item' data-item='" + i + "'><label for='itemname"+i+"'>itemname</label><br><input type='text' name='name' id='itemname"+i+"'><br><label for='itemprice"+i+"'>itemprice</label><br><input type='text' name='price' id='itemprice"+i+"'><br><br></div>");
        };
        $('#itemform').append("<button id='submit'>submit</button>");
    });
    $('#itemform').submit(function(e){
        e.preventDefault();

        var items = {};
        $('#itemform div.item').each(function(){

            var item = {};
            $(this).find('input[type=text]').each(function() {     
                var key = $(this).attr('name');
                var value = $(this).val();
                item [key] = value;
            });
            items[$(this).data('item')] = item;
        });
        console.log(items)
    });
});
$(“#提交”)
在您的示例中不存在。我将其替换为
$('#itemform').submit()
,它似乎记录了一个巨大的对象。请参阅更新的jfiddle

此外,如果您希望改进项目的存储方式,我再次更新了JSFIDLE,向您展示如何对项目进行分组:

$(document).ready(function() {
    $('#next').click(function(){
        var quantity = ($('select[name=quantity]').val());
        $('#itemform').html("");
        for (var i = 0; i < quantity; i++) {
            $('#itemform').append("<div class='item' data-item='" + i + "'><label for='itemname"+i+"'>itemname</label><br><input type='text' name='name' id='itemname"+i+"'><br><label for='itemprice"+i+"'>itemprice</label><br><input type='text' name='price' id='itemprice"+i+"'><br><br></div>");
        };
        $('#itemform').append("<button id='submit'>submit</button>");
    });
    $('#itemform').submit(function(e){
        e.preventDefault();

        var items = {};
        $('#itemform div.item').each(function(){

            var item = {};
            $(this).find('input[type=text]').each(function() {     
                var key = $(this).attr('name');
                var value = $(this).val();
                item [key] = value;
            });
            items[$(this).data('item')] = item;
        });
        console.log(items)
    });
});

不要将处理功能附加到表单的“提交”按钮的单击事件。相反,使用表单的提交事件

此外,即使在语法方面没有什么不同,为了可读性起见,您可能希望在“console.log(item)”之后添加“;”

另外,在您的情况下,表单上不需要onSubmit属性,只需返回“false”,并将处理函数附加到表单的提交事件中即可

<form id="itemform"></form>


请参见此处。

不要将处理功能附加到表单的提交按钮的单击事件。相反,使用表单的提交事件

此外,即使在语法方面没有什么不同,为了可读性起见,您可能希望在“console.log(item)”之后添加“;”

另外,在您的情况下,表单上不需要onSubmit属性,只需返回“false”,并将处理函数附加到表单的提交事件中即可

<form id="itemform"></form>


请参见此处。

不要将处理功能附加到表单的提交按钮的单击事件。相反,使用表单的提交事件

此外,即使在语法方面没有什么不同,为了可读性起见,您可能希望在“console.log(item)”之后添加“;”

另外,在您的情况下,表单上不需要onSubmit属性,只需返回“false”,并将处理函数附加到表单的提交事件中即可

<form id="itemform"></form>


请参见此处。

不要将处理功能附加到表单的提交按钮的单击事件。相反,使用表单的提交事件

此外,即使在语法方面没有什么不同,为了可读性起见,您可能希望在“console.log(item)”之后添加“;”

另外,在您的情况下,表单上不需要onSubmit属性,只需返回“false”,并将处理函数附加到表单的提交事件中即可

<form id="itemform"></form>


请参见此处。

分号在javascript中是可选的。如果你换一行,它会把它当作一个分号放在这行的末尾。事实上,我认为如果你决定在某个时候缩小你的代码,这可能会造成一个问题,但显然缩小算法足够聪明来处理这个问题。不过,我不确定这样做是否是一个好习惯,仅仅是为了可读性。我理解可读性方面,这样做看起来会更好,但从你的帖子的方式来看,这似乎是一个导致他出现问题的错误。事实上,这已经得到了修复。分号在javascript中是可选的。如果你换一行,它会把它当作一个分号放在这行的末尾。事实上,我认为如果你决定在某个时候缩小你的代码,这可能会造成一个问题,但显然缩小算法足够聪明来处理这个问题。不过,我不确定这样做是否是一个好习惯,仅仅是为了可读性。我理解可读性方面,这样做看起来会更好,但从你的帖子的方式来看,这似乎是一个导致他出现问题的错误。事实上,这已经得到了修复。分号在javascript中是可选的。如果你换一行,它会把它当作一个分号放在这行的末尾。事实上,我认为如果你决定在某个时候缩小你的代码,这可能会造成一个问题,但显然缩小算法足够聪明来处理这个问题。我不确定这样做是否是一个好习惯,仅仅是为了可读性。我理解可读性方面,这样做看起来会更好,但从你的帖子所处的位置来看,这似乎是一个导致h