-2

フォーム送信のイベントをキャッチし、DOMにdivを追加しています。コードhttp://jsfiddle.net/testtracker/7rkX4/7/ 今、コメント投稿者の名前、コメントが追加された時間などの引数を関数に渡したいです。こんな感じにしたいと思います。

html

<form onsubmit="addComment('john deo','post_id')">
    <input ......>
    <input ......>
</form>

javascript

function addComment(commenter_name,post_id){
  perform operation....
}
4

3 に答える 3

1

投稿したコードは正常に動作します。jsfiddle で機能しない理由は、関数がdocument.readyデフォルトでブロックの型で宣言されているためです (onLoad左側のドロップダウンを参照してください)。

イベント ハンドラをバインドする適切な方法は、javascript でバインドすることです。これにより、スコープの問題が回避されます。

インライン イベント ハンドラーを機能させる必要がある場合は、関数をグローバルとして明示的に定義できます。

window.addComment = function (commenter_name,post_id){
    perform operation....
};
于 2012-08-21T12:40:49.427 に答える
0

たとえば、コメント投稿者の名前を html に保存できます。

これを試してください (デモを参照してください: http://jsfiddle.net/7rkX4/8/ )。

HTML

<div class="post">
  <ul class="comments"></ul>

  <div class="comment_entry">
    <form method="post" action="#">
      <input type="hidden" name="name" value="Neha" />
      <input type="text" name="comment" placeholder="Leave comment" />
      <input type="submit" value="submit" />
    </form>
  </div>
</div>

<div class="post">
  <ul class="comments"></ul>

  <div class="comment_entry">
    <form method="post" action="#">
      <input type="hidden" name="name" value="Danil" />
      <input type="text"  name="comment" placeholder="Leave comment" />
      <input type="submit" value="submit" />
    </form>
  </div>
</div>​

JavaScript

$(document).ready(function () {
  $('.comment_entry form').submit(function (e) {
    e.preventDefault();

    var name = $('input[name="name"]', this).val();
    var comment = $('input[name="comment"]', this).val();

    $(this).parent().prev().append('<li><a class="commenter_name" href="/">' + name + '</a><br />' + comment + '</li>');
  });
});​
于 2012-08-21T12:53:09.453 に答える
-3

私の理解が正しければ、送信時にいくつかの変数と値のペアをフォームに追加する必要があります。を使用してフォームにいくつかの入力フィールドを追加してみませんかtype="hidden"。そうすれば、JavaScript コードでそれらの値を好きなように変更できます。

于 2012-08-21T12:34:43.383 に答える