枝: 我已经设法使用php中的foreach语句显示多个Div(div显示数据库中的不同行),并且每个Div都在底部有一个表单,其按钮唤起下面的javascript onclick函数。
function SubmitForm(msg) {
var cid = $("#cid").val();
var message = $("#"+msg).val();
$.post(
"picturecomments.php", { cid: cid, message: message }, function(data)
{alert(data);}
);
}
以下是表格
<form action="picturecomments.php" method="post">
<span >
<input type="hidden" name="cid" id="cid" value="',$result['id'],'"required="required"/>
<textarea name="'.$message.'" id="'.$message.'" style="width:85%; height:25px;
margin:0px;" placeholder="give a comment" required="required"></textarea>
<input type="button" onclick="SubmitForm('.$message.');"
id="searchForm"style="width:5%; height:25px; margin:0px;" value="Send"/>
</span>
</form>
我的问题是当我尝试单击发送按钮时,它总是会侦听第一个div, 所以我注意到问题是因为我只有一个ID用于这些标签,当脚本运行时,它只发送第一个ID ......
如何为多个ID运行该功能? 因为当我有2个div时,该函数只会听第一个表单提交
请帮助!!
答案 0 :(得分:0)
你可以使用每个jquery。假设您有多个具有“post”类
的div<div class="post">
<input type="text" class="cid">
<textarea class="msg"></textarea>
</div>
<div class="post">
<input type="text" class="cid">
<textarea class="msg"></textarea>
</div>
$( ".post" ).each(function( index ) {
$.post( "picturecomments.php", { cid: $(this).find('cid').val(), message: $(this).find('textarea').val() }, function(data) {
alert(data);
});
});
所以它基本上会遍历所有具有类post的div。找到class =“cid”/ class =“msg”的输入字段,然后将其发送到您的php处理器。
当然,这是非常基本的,但你会按照自己的方式行事!
btw:确保你不使用ID。他们应该是独一无二的!
答案 1 :(得分:0)
您根本不需要使用ID,您只需使用每个表单中的名称并将其序列化即可。
我还会删除内联的javascript(和css ...)以及硬编码的$message
,因为如果你这样说就永远无法更改原始邮件。
也没有理由在每种表单中为邮件使用不同的name
属性。
您还需要阻止默认/普通的html表单提交。
php / html
<form action="picturecomments.php" method="post">
<span >
<input type="hidden" name="cid" value="' . htmlspecialchars($result['id']) . '" required="required"/>
<textarea name="message" placeholder="give a comment" required="required"></textarea>
<input type="button" value="Send"/>
</span>
</form>
的javascript:
$("form").on("submit", function(e) {
e.preventDefault();
$.post(
"picturecomments.php",
$(this).serialize(),
function(data) {
alert(data);
});
}