2013-08-16 5 views
0

В принципе, у меня есть большая строка, которую я раскалываю, а затем снова разделяю.Как вставить строку в массив текстовых входов?

Затем мне нужно использовать самый маленький разделительный массив, чтобы поместить его элементы в текстовые входы на моей странице.

Это мой 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 

Как вы можете видеть выше, каждый вопрос отделяется разрывом строки, будучи \ п , то каждая отдельная часть разделяется запятой.

Каждый ввод вопросов содержит переменную многомерного значения, присвоенную ее идентификатору. Например, используя приведенные выше данные, первая строка данных вместе с самым первым элементом (вопрос 1) будет вопросом [1] [1]. Другим примером может быть «неправильный ответ1» на третьей строке данных, что было бы вопросом [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; 
     }); 
    }); 
} 
+0

Может у имитировать то же самое на Jsfiddle, http: //jsfiddle.net – dreamweiver

+0

@dreamweiver - Я думаю, что будет далеко трудно, так как есть много других функций, которые участвуют – Fizzix

+0

я думаю, вы можете просто включить соответствующие функции, которые определяют сферу действия вашей проблемы – dreamweiver

ответ

2

После дальнейшего обсуждения с ОР, мы исправили код заканчивал тем, что ниже. В основном, его номера ввода начинаются с индекса 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]); 
}