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

改訂された 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 は、このための優れたメソッドを提供します。

$('.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 に答える
1
function commentPost(postId)
{
    alert("Inside commentpost");
    aler($("#commentPost"+postId).find('textarea').val());

}

これにより、テキストエリアの値が得られます

于 2012-06-13T06:46:06.143 に答える
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 に答える