0

Hie:我已经设法使用 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 时,该函数只会监听第一个表单提交

$message 变量在同一个 php 代码中,我已经完成了我的研究,但我找不到解决方案

请帮忙!!

4

2 回答 2

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);
  });
}
于 2013-05-02T00:44:57.790 回答
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);
    });
});

所以它基本上会遍历所有具有类帖子的div。找到一个带有 class="cid" / class="msg" 的输入字段,然后将其发送到您的 php 处理器。

当然,这是非常基本的,但你会努力摆脱它!

http://api.jquery.com/each/

顺便说一句:确保你不使用身份证。他们应该是独一无二的!

于 2013-05-02T00:20:48.333 回答