【问题标题】:jQuery dynamic table inputsjQuery 动态表输入
【发布时间】:2013-07-09 23:12:50
【问题描述】:

我正在使用 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
    }
};

【问题讨论】:

    标签: javascript jquery css html-table


    【解决方案1】:

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

    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 应该始终是唯一的。

    【讨论】:

    • 要了解其他选择器的想法,请查看此页面:api.jquery.com/category/selectors
    • 对不起,我真的不明白 "ParseInt($(this).attr("name").split("_")[1])" 位是如何工作的,你能详细说明一下吗?
    • 在 jquery 回调“this”中是您正在搜索的 html 元素。将它包装在 $() 中允许您在该元素上使用 jquery 函数。一个函数是 attr(),它采用 html 属性的名称,并将返回该元素的该属性的值。返回的值是一个字符串。我在 forceRecording 函数中插入时为您的元素 id 添加了下划线。然后可以在下划线字符上拆分字符串,返回一个包含两个元素的数组,0 是“forceButton”部分,1 是计数器。 ParseInt 将后者转换为整数。
    • 我也意识到我应该在 num attr 函数中使用“id”而不是“name”。
    • 您可以投票或给我的答案打勾。大声笑不用担心。我希望我不会太简洁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 2017-08-14
    • 2012-04-04
    • 1970-01-01
    • 2012-01-02
    相关资源
    最近更新 更多