循环中textarea的值

时间:2016-09-11 13:45:47

标签: php jquery html

html和php:

foreach($questions as $question)
{
      ?><br><textarea class="answer">Answer here...</textarea><button data-id="<?php echo $question->id;?>"class="addanswer">Post</button><?php 
}

jquery的:

$(document).on('click','.addanswer',function(e)
{
    e.preventDefault();
    var answer=$('textarea.answer').val();
    var q_id=$(this).data('id');
    alert(answer);
    alert(q_id);

我收到了我在textarea中输入的第一个问题的文字。对于所有其他问题,它只会在此处提醒答案...即使我得到了预期的q_id。

2 个答案:

答案 0 :(得分:3)

这是你的问题:

var answer=$('textarea.answer').val();

这将始终为您提供jQuery遇到的第一个$('textarea.answer')元素的值;它没有以任何方式链接到点击的按钮。

你想要点击按钮旁边的元素的值,所以使用这个html结构,你可以使用:

var answer = $(this).prev().val();

答案 1 :(得分:0)

您可以在父节点中包装每个textarea /按钮。 顺便说一句。非常脏的代码; - )

// PHP:
$template = '<div><textarea class="answer">Answer here...</textarea><button data-id="%ID%" class="addanswer">Post</button></div>';

foreach( $questions as $question )
    echo str_replace( '%ID%', $question->id, $template );


// JQUERY:

$(document).on('click','.addanswer',function(e) {
    e.preventDefault();
    var answer=$('textarea.answer', this.parentNode).val();
    var q_id=$(this).data('id');
    alert(answer);
    alert(q_id);

    ....