在jQuery中检索动态生成的textarea的值?

时间:2012-06-13 06:41:30

标签: jquery jquery-selectors dom-traversal

<div id="post">
  <form name="postComment" id="commentPost6" action="javascript:void(0);" method="post"
    target="_top" onsubmit="return commentPost(6)">
     <textarea name="comment" id="comment6" class="commentText" 
        cols="10" rows="3" accesskey="1">
     </textarea><br>
     <input type="submit" name="submit" id="commentpost" value="Submit" accesskey="2">
  </form>
</div>

这是我的帖子 div标记,我有多个div 标记,其id =“post”, 表单和字段是动态生成的,表单 textarea 的ID都是唯一的,因此在点击提交时,重新查找这些值没有问题,我打电话给< strong> commentPost 方法。

function commentPost(postId)
{
    alert("Inside commentpost");
    //how to retrive/access value of textarea here

}

如何获得textarea的价值? 以防万一

是的,我知道有多个具有相同ID的元素是无效的HTML。

4 个答案:

答案 0 :(得分:5)

$('#comment'+postId).val();

为什么你不是简单地使用类而不是id? (POST)

答案 1 :(得分:1)

function commentPost(postId)
{
    alert("Inside commentpost");
    aler($("#commentPost"+postId).find('textarea').val());

}

这将为您提供textarea值

答案 2 :(得分:1)

修改后的HTML post现在是一个类,javascript:已移除action):

<div class="post">
  <form name="postComment" id="commentPost6" action="" method="post"
    target="_top" onsubmit="return commentPost(this)">
     <textarea name="comment" id="comment6" class="commentText" 
        cols="10" rows="3" accesskey="1">
     </textarea><br>
     <input type="submit" name="submit" id="commentpost" value="Submit" accesskey="2">
  </form>
</div>

<强>使用Javascript:

function commentPost(form)
{
    var textAreaValue = $(form).find('.commentText').val();
    console.log(textAreaValue);
}

更好的是,您应该开始编写高级事件处理程序而不是这些内联事件处理程序(onsubmit=""和朋友)。 jQuery为此提供了great methods

$('.post form').submit(function (e) {
    var textAreaValue = $(this).find('.commentText').val();
    console.log(textAreaValue);

    e.preventDefault(); //to prevent default event - which is form submission
});

内联事件处理程序适用于快速测试,但它们很快就会导致无法维护,混乱的HTML源代码。您应该遵循Separation of Concerns的规则。

答案 3 :(得分:0)

试试这个:

根据您在上述表单中传递与您的命名标准相匹配的postId,您有6个。

function commentPost(postId) {
        alert("Inside commentpost");
        // One way.
        var $testAreaValue = $('textarea.commentText#comment' + postId).val();
        alert($testAreaValue);
        // second way.
        $testAreaValue = $('#comment' + postId).val();
        alert($testAreaValue);
}

希望它有所帮助。