1
<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 标签,我有多个具有相同 id="post" 的 div 标签,表单和字段是动态生成的,表单文本区域的 id都是唯一的,因此在点击时检索这些值没有问题提交时,我调用commentPost方法。

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

}

如何获得文本区域的价值?以防万一

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

4

4 回答 4

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

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

于 2012-06-13T06:44:51.137 回答
1
function commentPost(postId)
{
    alert("Inside commentpost");
    aler($("#commentPost"+postId).find('textarea').val());

}

这将为您提供 textarea 值

于 2012-06-13T06:46:06.143 回答
1

修改后的 HTMLpost现在是一个类,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 为此提供了很好的方法

$('.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 源代码。您应该遵循关注点分离的规则。

于 2012-06-13T06:53:39.007 回答
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);
}

希望能帮助到你。

于 2012-06-13T07:00:48.283 回答