如何将字符串插入文本输入数组?

时间:2013-08-16 11:15:18

标签: javascript html input

基本上,我有一个大字符串,我正在分裂,然后再分裂。

然后我需要使用最小的split数组将其元素放在我页面上的文本输入中。

这是我的Javascript

var splitquestions = vals[2].split('\n');

              //Loop to go through all current questions
              for (var i = 0; i < splitquestions.length - 1; i++) 
              {
                  //trigger a question add where a single question data can be added into
                  $( "#add" ).trigger('click');

                  //split current question into separate items
                  var s = splitquestions[i].split(',');

                  //Loop to go over all sections in a question
                  var count = 0;
                  for(var j = 0; j < s.length; j++)
                  {
                      count = count + 1;
                      var qs = document.getElementById('questions[' + j +'][' + count + ']').value;

                      qs = s[j];

                  }

              }

页面上会有很多问题,具体取决于用户想要添加的数量。每个新问题块将包含一个问题,3个错误答案和1个正确答案。

出错的部分是在最后一个循环中。这是我需要抓取's'数组中每个单独元素的位置,并将其放在每个文本输入中。

这是原始数据在被“splitquestions”变量分割之前的显示方式:

question1,incorrect-answer1,incorrect-answer2,incorrect-answer3,correct-answer
question2,incorrect-answer1,incorrect-answer2,incorrect-answer3,correct-answer
question3,incorrect-answer1,incorrect-answer2,incorrect-answer3,correct-answer

从上面可以看出,每个问题都以换行符分隔,为\ n,然后每个单独的部分都以逗号分隔。

每个问题输入都有一个分配给其ID的多维变量。例如,使用上面的数据,第一行数据和第一个元素(问题1)将是问题[1] [1]。另一个例子是第三行数据的'wrong-answer1',这将是问题[3] [2]。第一个数字是问题编号,第二个数字是元素编号。

我希望我已经很好地解释了这一点,因为我对如何自己解释它有点困惑,因为我不熟悉多维数组和循环内部的循环。所以,如果您需要任何其他信息,请发表评论,我会尽力而为。

如果需要,这是动态创建问题元素的函数:

function dynamicForm () {

    //set a counter
    var i = $('.dynamic-input#form-step2').length + 1;
    //alert(i);
    //add input
    $('a#add').click(function () {
        $('<table><tr><td><p><span class="left"><input type="text" class="dynamic-input" name="questions[' +i +'][1]" id="' + i + '" placeholder="Question" /></span>' + '<span class="right"><input type="text" class="dynamic-input" name="questions[' +i +'][2]" id="' + i + '" placeholder="Distraction 1" /><br /><input type="text" class="dynamic-input" name="questions[' +i +'][3]" id="' + i + '" placeholder="Distraction 2" /><br /><input type="text" class="dynamic-input" name="questions[' +i +'][4]" id="' + i + '" placeholder="Distraction 3" /><br /><input type="text" class="dynamic-input" name="questions[' +i +'][5]" id="' + i + '" placeholder="Correct Answer" /><br /><a href="#">Remove</a></span></p></td></tr></table>').fadeIn("slow").appendTo('#extender');
        i++;

        $("a:contains('Remove')").click(function () {
                $(this).parent().parent().remove();
        });

        return false;
    });


    //fadeout selected item and remove
    $("#form-step2.dynamic-input").on('click', 'a', function () {
        $(this).parent().fadeOut(300, function () {
            $(this).empty();
            return false;
        });
    });
}

1 个答案:

答案 0 :(得分:2)

在与OP进行进一步讨论后,我们修改了代码,最终得到了以下内容。基本上,他的输入数字从索引1而不是0开始,所以这是问题之一。他还尝试按id进行选择,而有问题的输入只有name属性。

//Loop to go over all sections in a question
for (var j = 1, len = s.length; j <= len; j++) { 
    $('input[name="questions[' + (i + 1) + '][' + j + ']"]').val(s[j - 1]); 
}