使用foreach循环发布动态生成的文本框

时间:2011-06-07 10:51:05

标签: php jquery mysql

我想通过foreach循环使用php发布动态生成的多个文本框。 例如,我正在研究问题库和从php发布多个答案。 这是我动态生成文本框的代码,但现在我不知道如何通过foreach循环发布生成的文本框的值。

$("#questionbank").live('click',function(){
    var mydata = '<div id="questionbank-content" class="page">';
    mydata += '<div class="question"><div class="Label">Question</div><div class="textarea"><textarea id="question" rows="3" cols="30"></textarea></div></div><div class="answer"><div class="Label">Answer</div><div class="textarea"><textarea id="answer" rows="3" cols="30"></textarea></div><div class="option"><input id="a" name="answers" type="radio"></div><span id="add">Add</span>';
    var i=1;
    $('#add').live('click',function(){
         j=i++;
         $(this).after('<div class="Label">Answer</div><div class="textarea"><textarea id="answer + '+ j +'" rows="3" cols="30"></textarea></div><div class="option"><input id="a + '+ j +'" name="answers" type="radio"></div><span id="add">Add</span>');

        //$(this).after('<input id="'+ j +'" type="text" value="'+ j +'"/><span id="add">Add</span>');
        $(this).remove(); 
    });
    mydata += '</div></div>';
    $("#leftcontainer").html(mydata);

});

2 个答案:

答案 0 :(得分:1)

考虑以下HTML

<div id="start">Start</div>

<div id="container">

</div>

我想你想通过$.post()$.ajax()

发布textbox / textarea的每个值的数据
var i=1;
$('#start').one('click',function(){
    j=i++;
   $('#container').append('<input id="answer'+ j +'" type="text" value=""/><span id="add">Add</span>');
    $('#container').after('<div id="submit">Submit</div');
});

$('#add').live('click',function(){
     j=i++;
    $(this).after('<input id="answer'+ j +'" type="text" value=""/><span id="add">Add</span>');
    $(this).next().next().after('');
    $(this).remove(); 
});

$('#submit').live('click',function(){
    var x = $('#container > input');
    var qstring='op=insertquestion'; //additional para if u want to pass any
    $.each(x,function(index,value){
        var id = $(this).attr('id');
        var data = $(this).val();
        qstring += '&'+id+'='+data+'';
    });
    $('#start').before(qstring + '<br/>');
});

获得变量qstring后,只需使用$.post()方法发布字符串。

Example on JSFIDDLE.net

答案 1 :(得分:0)

最简单的方法是通过jQuery构造textarea并提交按钮并附加一个单击处理程序。不是一个完整的解决方案,但它应该有希望给你一个想法:

$("#add").live("click", function() {
    var textarea = $("<textarea />", { "class": "textarea" });
    var submitButton = $("<button />", { "type": "submit" });

    submitButton.bind("click", function() {
        var text = textarea.val();
        $.post("/path/to/script.php", { text: text });
    });
});

这将创建一个textarea和一个提交按钮。调用提交按钮时,会对script.php进行HTTP POST,并将textarea内容作为参数。