微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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
          } 
          ]
    }

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

任何人都有任何想法?

谢谢!

谢谢你的回答!

但我无法管理它!

我试过这个:

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

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

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

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

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

QuestionAlts = [''+Alt1+'',''+Alt2+'',''+Alt3+''];

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

QuestionAlts = [''+Alt1+'',''+Alt3+'',''+Alt4+'',''+Alt5+''];

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

谢谢!

解决方法

编辑:

在此代码中,您没有正确使用上下文. 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);
});

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

以这种方式使用.each:

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

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

< input data-type =“answer”/>

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

$('input[data-type="answer"]')

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐