1

所以我正在为学校做一个 JS 项目,我有一个表单,用户可以在其中输入问题中的力的数量,一旦进入循环,就会为每个力创建新的字段。我把那部分记下来了,但是我在存储来自每个新字段的文本输入时遇到了问题。我正在使用 .on 函数,用户必须单击一个按钮,然后根据单击的按钮的 id 创建一个强制数组的数字。然后假设输入被读入数组,但它只是不工作并且它让我发疯。有任何想法吗?提前致谢。

function forceRecording(numofforces){
    for(var i =0; i<numofforces; i++){
        $('#button1').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').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>")
    }
};  

$("button[id^='forceButton']").on("click",function(){
    var num = parseInt($(this).attr("id").split("_")[1]);
    forces[num] = $('input[id=forceMeasure_'+num+']').val();
    $('#button1').after('<td>'+forces[num]+'</td>');
});

如您所见,我暂时在表中添加了另一列,只是为了检查力是否实际上指向数组,但是当我运行它时,没有任何新的弹出。

4

1 回答 1

1

我很确定你现在已经解决了这个问题。但我只是碰巧看到这篇文章,并认为答案可以帮助未来的读者。

您的代码中有三个问题阻止它工作,它们如下:

  1. $("button[id^='forceButton']")用于代替$(".button[id^='forceButton']"). 注意.之前的button. 如果没有.jQuery,则会查找button带有idlikeforceButton的标签,而有问题的标签是div带有classas的标签button
  2. $('input[id=forceMeasure_'+num+']').val();用于获取文本框值,但您的input字段没有任何id. 它只有一个name,所以改为使用$('input[name=forceMeasure_' + num + ']').val();.
  3. input字段设置为<input type='text' name='forceMeasure_'/>。请注意,forceMeasure_缺少后的计数部分。它应该是<input type='text' name='forceMeasure_" + i + "'/>

如上所述进行所有三个更改,代码工作正常。

单击此处查看工作代码的示例演示。

于 2013-10-21T08:49:13.110 回答