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