Jquery - 从动态创建的输入中获取值

Kim*_*Kim 5 forms jquery

我一直试图创建一个"测验生成器".

我有一个表格,你可以填写测验的答案替代品,但在这里你也可以用新的id动态创建新的字段.

所以它用id txtAnswer1,txtAnswer2等创建新的输入.

以下是获取值的(不可用)代码:

    $("#AddNewQuiz").click(function () {
    var NewQuizAlts = $("#txtAnswer").val();
    var NewQuizQuestion = $("#NewQuizQuestion").val();
    var init = { 
        'questions': [ 
        {
       'question': NewQuizQuestion,
       'answersAlts': [NewQuizAlts,'Two','Three','Four'],
          'correctAnswer': 1
          } 
          ]
    }   
Run Code Online (Sandbox Code Playgroud)

你在这里看到它只获得静态第一个值.但我想得到所有在"循环"或其他东西中创建的值.

任何人都有任何想法?

谢谢!


谢谢你的回答!

但我无法管理它!

我试过这个:

    $('input[id^="txtAnswer"]').each(function(input){
        var value = $('input[id^="txtAnswer"]').val();
        var id = $('input[id^="txtAnswer"]').attr('id');
        alert('id: ' + id + ' value:' + value);
        });
Run Code Online (Sandbox Code Playgroud)

但只给我提醒(4次)唯一最后创建的输入.有什么不对?

事情是,这是我想要实现的目标:

1.)使用上面的代码获取所有创建的输入的列表.

2.)将它们放在逗号分隔的列表中,其值如下:

    QuestionAlts = [''+Alt1+'',''+Alt2+'',''+Alt3+''];
Run Code Online (Sandbox Code Playgroud)

3.)并且还根据创建的输入数量在列表中生成更多替代项,因此如果我创建了5个替代项,它将是:

    QuestionAlts = [''+Alt1+'',''+Alt2+'',''+Alt3+'',''+Alt4+'',''+Alt5+''];
Run Code Online (Sandbox Code Playgroud)

我知道如果要求所有这些帮助是很多的,但有点总比没有好:)

谢谢!

Yat*_*rix 9

编辑:

在此代码中,您没有正确使用上下文.http://api.jquery.com/jQuery.each/

$('input[id^="txtAnswer"]').each(function(input){
        var value = $('input[id^="txtAnswer"]').val();
        var id = $('input[id^="txtAnswer"]').attr('id');
        alert('id: ' + id + ' value:' + value);
});
Run Code Online (Sandbox Code Playgroud)

在你的.each,传递给函数的是你用选择器拉出的数组中的一个项目.设置时value = $('input...,您将再次拉出相同的阵列.

.each这种方式:

$('your selector').each(function(index, item){
    var val = $(item).val();
    var id = $(item).attr('id');
    ...
});
Run Code Online (Sandbox Code Playgroud)

除非你需要有id的答案,为什么不使用data-*属性来表示它们作为答案呢?您可以像这样标记每个:

<input data-type="answer"/>

然后以这种方式将它们全部拉出来:

$('input[data-type="answer"]')
Run Code Online (Sandbox Code Playgroud)

这样做可以消除对需要确保每个动态id是唯一的关注,如果它们不重要的话.我有一个为工作创建的数据过滤器,它在页面加载后动态创建元素,我没有问题以这种方式从DOM中提取数据.