Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加多个输入并增加其名称_Javascript_Jquery_Html - Fatal编程技术网

Javascript 添加多个输入并增加其名称

Javascript 添加多个输入并增加其名称,javascript,jquery,html,Javascript,Jquery,Html,我已经找到了许多关于动态添加文本输入的答案,但是我似乎找不到命名输入的来源。例如,如果一行上有3个输入,而用户添加了另一行,则需要输出为: 名称\u 1文本\u 1主题\u 1 名称\u 2文本\u 2主题\u 2 下面是我到目前为止所拥有的,这里是我的 JS: 编辑以供解决方案和参考: $(function() { var idx = 0; var scntDiv = $('#speedTable'); var htmlContent1a = '<tr><td><

我已经找到了许多关于动态添加文本输入的答案,但是我似乎找不到命名输入的来源。例如,如果一行上有3个输入,而用户添加了另一行,则需要输出为:

名称\u 1文本\u 1主题\u 1

名称\u 2文本\u 2主题\u 2

下面是我到目前为止所拥有的,这里是我的

JS:

编辑以供解决方案和参考:

$(function() {

var idx = 0;
var scntDiv = $('#speedTable');
var htmlContent1a = '<tr><td><label style="position:relative;">Start Run Length</label><input style="" type="text" class="selector" id="start_run_length';
var htmlContent1b = '" name="start_run_length';

var htmlContent2a = '"></td><td><label style="position:relative;">End Run Length</label><input style="" type="text" class="selector" id="end_run_length';
var htmlContent2b = '" name="end_run_length';

var htmlContent3a = '"></td><td><label style="position:relative;">Speed-Impressions/hr</label><input style="" type="text" class="selector" id="impressions_per_hr';
var htmlContent3b = '" name="impressions_per_hr';
var htmlContent3c = '"></td></tr>';

          $('#add-button').on('click', function() {
            //increment an index
            idx++;
            var newContent = htmlContent1a + idx + htmlContent1b + idx + htmlContent2a + idx + htmlContent2b + idx + htmlContent3a + idx + htmlContent3b + idx + htmlContent3c;
              $(newContent).appendTo("#tableBody");
          });
        });

小心,多个标记不能具有相同的id。我把ID改成了类

 $(function() {
          var scntDiv = $('#speedTable');

          $('#add-button').on('click', function() {
            var i = $('#speedTable tbody').size() + 1;
            $('<tr><td><label style="position:relative;" for="start_run_length">Start Run Length</label><input style="" type="text" class="start_run_length" name="start_run_length' + i + '"/></td><td><label style="position:relative;" for="end_run_length">End Run Length</label><input style="" type="text" class="end_run_length" name="end_run_length' + i + '"></td><td><label style="position:relative;" for="impressions_per_hr">Speed-Impressions/hr</label><input style="" type="text" class="impressions_per_hr" name="impressions_per_hr' + i + '"></td></tr>').appendTo(scntDiv);
            return false;
          });

        });

通过在名称后面附加迭代器整数,您已经有了正确的想法,您需要对id属性执行相同的操作

但更好的方法是使用数组作为名称

name='whatever[]'
…这样你就不用担心追加数字了

但这造成了无法将每个输入与同一行上的其他输入关联的问题。我经常添加一个数据索引属性来帮助实现这一点

在动态创建的每个输入上添加一个数据索引='+i+'参数,然后可以使用一个jquery选择器获取整行

var row = $("input[data-index='1']"); // returns all rows in the 2nd column
startInput = row[0];
endInput = row[1];
theOtherInput = row[2];

使用数组添加数字。当添加一个框时;增加数字。欢迎来到stack overflow:对于Jquery来说是相当新的,我明白你的意思,但是你有一个例子吗?每次我试着这么做都会给我带来一个错误。哦,谢谢你回答我的问题,我不会给你投票或者其他什么,但是你会为我写代码吗。。。不,我不会那么做的。我找到了一个例子,并且弄明白了。对不起,我不想让你写,只是一个样本。我太新了,不能投弃权票。我很高兴你明白了。作为将来的参考,你不想要求别人提供代码,所以,它永远不会成功。祝你好运,谢谢,我忘了。
name='whatever[]'
var row = $("input[data-index='1']"); // returns all rows in the 2nd column
startInput = row[0];
endInput = row[1];
theOtherInput = row[2];