1 つのページに同じ名前のフォームが多数ある場合、HTML フォームから Javascript の送信のみで入力の値を取得する方法を知りたいです。
次のようになります。
最初に印刷された HTML フォーム:
<div id="addCommentContainer3">
<form class="add-comment-form" id="addCommentForm3" method="post" action="">
<input type="hidden" value="3" name="comentonpost" id="comentonpost"/>
<textarea class="commentinput" name="body" id="body" cols="20" rows="5"></textarea>
<input type="submit" id="submit" value="Submit" />
</form>
</div>
2 番目の印刷:
<div id="addCommentContainer2">
<form class="add-comment-form" id="addCommentForm2" method="post" action="">
<input type="hidden" value="2" name="comentonpost" id="comentonpost"/>
<textarea class="commentinput" name="body" id="body" cols="20" rows="5"></textarea>
<input type="submit" id="submit" value="Submit" />
</form>
</div>
このように、他にもたくさんあります。
Javascriptで値がcomentonpost
必要なので、コメントを投稿するaddCommentContainer
と、送信されたフォームの前に表示されるため、値を取得する必要があります。
そして、Javascript全体があります:
$(document).ready(function(){
var name_element = document.getElementById('comentonpost');
var x = name_element.value;
/* The following code is executed once the DOM is loaded */
/* This flag will prevent multiple comment submits: */
var working = false;
/* Listening for the submit event of the form: */
$('#addCommentForm'+x).submit(function(e){
e.preventDefault();
if(working) return false;
working = true;
$('#submit').val('Working..');
$('span.error').remove();
/* Sending the form fileds to submit.php: */
$.post('comment.submit.php',$(this).serialize(),function(msg){
working = false;
$('#submit').val('Submit');
/*
/ If the insert was successful, add the comment
/ below the last one on the page with a slideDown effect
/*/
$(msg.html).hide().insertBefore('#addCommentContainer'+x).slideDown();
},'json');
});
});
このようにして、送信ボタンを押すと、ページに印刷された最初のフォームに対してのみ機能します。
私の質問は、どうすればこれを修正できますか? comentonpost
最初に印刷されたフォームではなく、送信されたフォームの値のみを取得するにはどうすればよいですか?このスクリプトが機能するより良い方法はありますか?
前もって感謝します!