0

我正在使用 JS 进行学校项目,我创建了一个表单,在其中输入问题中的力的数量,并(通过 jquery)编辑 HTML,以便在行之后添加一些新的输入行我输入了我的部队人数。

我的问题:现在这些新输入可用,我试图将它们设置为等于一个数组,以便以后可以使用这些值。我已经设置了一个 for 循环,它与我的力的循环相同,我试图让它通过单击新行中的按钮来记录每个力。问题是它没有记录。

有人对如何在数组中获取这些值有任何想法吗?将不胜感激。

此外,如果你们中的任何人知道动态表单或表格的框架,这将使这更容易。

function forceRecording(numofforces) {
    for(var i =0; i<numofforces; i++) {
        $('#button1').parent().parent().after("<tr><td>Force DFO " + i +":</td><td><form><input type='text' name='lengthMeasure'/></form></td><td><div class='button' id='lengthButton"+i+"'>Add!</div></td></tr>")
        $('#button2').parent().parent().after("<tr><td>Force " + i +":</td><td><form><input type='text' name='forceMeasure'/></form></td><td><div class='button' id='forceButton"+i+"'>Add!</div></td></tr>")
    }

    for(var i = 0; i < numofforces;i++) {
        $("#forceButton"+i).click(function(){
            force[i]= $('select[name=forceMeasure]').val();
        });
        $('#forceButton'+i).after("<p>"+force[i]+"</p>");  //only temporary to check if the force is actually in the variable
    }
};
4

1 回答 1

0

您可以使用更通用的选择器在一个事件中选择您需要的所有输入。

function forceRecording(numofforces){
for(var i =0; i<numofforces; i++){
    $('#somediv').after("<tr><td>Force DFO " + i +":</td><td><input type='text' id='lengthMeasure"+i+"'/></td><td><div class='button' id='lengthButton_"+i+"'>Add!</div></td></tr>")
    $('#someotherdiv').after("<tr><td>Force " + i +":</td><td><input type='text' id='forceMeasure_"+i+"'/></td><td><div class='button' id='forceButton_"+i+"'>Add!</div></td></tr>")
}
};   
$("div.button[id^='forceButton']").live("click",function(){
    var num = parseInt($(this).attr("name").split("_")[1]);
    force[num]=$('text[id=forceMeasure_'+num+']').val();
    console.log(force);
});

如果您正在生成要附加事件的新元素,Live 是一个更好的功能。您只需使用 live 绑定事件一次,而不是每次创建元素时。每页也只需要一个表单元素。理想情况下,名称和 ID 应该始终是唯一的。

于 2013-07-09T23:39:48.757 回答