jQuery:将动态生成的输入值放入span / div

时间:2014-03-16 17:28:56

标签: javascript jquery

我正在尝试使用动态生成的输入创建打印表单。 稍后将在PreviewDiv中显示这些字段的内容。 只要我指定它们应该在哪里,它就可以正常工作,例如:

$('#Prw_CapacityA_1').text($('#CapacityA_1').val());
$('#Prw_CapacityB_1').text($('#CapacityB_1').val());
$('#Prw_CapacityC_1').text($('#CapacityC_1').val());

但是如果用户创建了100个字段,那么编写的代码就会很多。 必须有其他方法来动态修复此问题,例如:

$('#Prw_CapacityA_'+ counter).text($('#CapacityA_'+ counter).val());

Here's the js fiddle

2 个答案:

答案 0 :(得分:1)

您可以尝试使用attribute starts with selector选择以特定ID开头的元素,然后使用each()函数循环播放它们。

您的预览表中无需使用html。您可以在用户单击预览时生成它。已修改fiddle

$('#PreviewButton').click(function(){

    var capB = $('td input[id^=CapacityB_]');
    var capC = $('td input[id^=CapacityC_]');
    var table = $("#AddFieldsToPreviewDiv");
    table.empty(); //build table everytime user previews so that previously appended values are removed 
    table.append('<tr><td>ID</td><td>Text 1</td><td>Text 2</td><td>Text 3</td></tr>');

    $('td input[id^=CapacityA_]').each(function(i){
        table.append('<tr><td>#'+(i + 1)
                      +'</td><td>'+$(this).val()
                      +'</td><td>'+$(capB[i]).val()
                     +'</td><td>'+$(capC[i]).val()
                     +'</td></tr>');
    });
    // Show PreviewDiv and hide FormDiv if PreviewButton clicked
    $('#PreviewDiv').show();
    $('#FormDiv').hide();
});

答案 1 :(得分:0)

您可以尝试给他们一个独特的课程(通常我建议使用ID,但您使用的是一个)说一类“getinfo”

然后你可以试试.each()函数

https://api.jquery.com/each/

$( ".getinfo" ).each(function( index ) {
var text = $(this).val();
 alert(text);
});  

这将为它使用类'getinfo'找到的每个元素创建一个警告框,然后检索该值并显示它,我希望这会给你一个更好的主意。

如果输入量可以从一个页面加载更改为下一个页面加载,那么您需要使用循环,而不是通过“手”拉动所有值,更多代码将有助于更好地理解您要实现的目标和来自 what