2

ウェブサイトの返信フォームのsumbitで関数を実行しようとしています。これらのフォームはページの読み込み後にJavascriptによって作成されるため、Jqueryはライブ関数を使用して「.replyformsubmit」クラスのボタンのクリックに反応します。

フォームの入力値を記録するスクリプトが必要ですが、記録できないようです。

現在、ボタンを格納しているフォームのIDが見つかりましたが、それを使用して入力値を見つけようとしても無駄に思えます。おそらく男子生徒のエラーですが、私はそれを推測できないようです。

どんな助けでも素晴らしいでしょう。

Jquery:

$(".replyformsubmit").live("click", function(){

var curform = $(this).closest('form').attr('id');//what form is the current one?


var comment = $('#' + curform + ' >  input[name=comment]"').val(); //comes out as undefined
var replyingSerial = $('#' + curform + ' >  input[name=replyingSerial]"').val(); //comes out as undefined

...

スクリプトは、コメントreplyingSerialが何であるかを見つけることができないようです。

標準のサンプルフォームのHTMLは次のとおりです。

<form action="com.php" method="post" id="replyform_quickreply_1345291318.6107" class="replyform">
<textarea name="comment" type="text" id="commenttextquickreply_1345291318.6107">
</textarea>
<br>
<input type="submit" value="send!" class="replyformsubmit">
<input type="hidden" style="visibilty: hidden;" name="replyingSerial" value="1345291318.6107"></form>
4

3 に答える 3

2

これは、ボタンがであるためsubmit、残りのコードが実行されないようにするためです。type='button'代わりに使用してください。

または使用:

$('#formname').submit(function() {
  alert('Handler for .submit() called.');
  return false;
});
于 2012-08-18T12:24:39.233 に答える
2

いくつかのこと。コメントは入力ではなくテキストエリアであるため、コメントを検索する場合は、textarea [name=comment]を使用する必要があります。

次に、parent()を使用して、コードを少しすっきりさせることができます。

$(".replyformsubmit").on("click", function(){
   var parent = $(this).parent();
   var comment= parent.find("textarea[name=comment]");
    alert(comment.val());
});​
于 2012-08-18T12:28:07.527 に答える
1

input type="submit"をinputtype= "button"に変更します。これは、送信後に他のコードを実行できないためです。.live()の代わりに.on()を使用してください。

jQuery 1.7以降、.live()メソッドは非推奨になりました。.on()を使用して、イベントハンドラーをアタッチします。古いバージョンのjQueryのユーザーは、.live()ではなく.delegate()を使用する必要があります。

このメソッドは、委任されたイベントハンドラーをページのドキュメント要素にアタッチする手段を提供します。これにより、コンテンツがページに動的に追加される場合のイベントハンドラーの使用が簡素化されます。詳細については、.on()メソッドの直接イベントと委任イベントの説明を参照してください。

于 2012-08-18T12:26:08.840 に答える