【问题标题】:php Jquery form generated from a foreach从 foreach 生成的 php Jquery 表单
【发布时间】:2025-12-26 03:30:10
【问题描述】:

我有一个从 sql 选择生成数据的 foreach。当用户点击 div 时,会出现一条文本消息“points ganed”,表单内的数据将被提交。

整个脚本可以工作,但它总是在 4 生成时提交最后一个表单……他没有针对正确的表单。

有办法锚定要提交的正确表单吗?在此先感谢大家。

<script>
function(response) {

                $('#mydiv').text('Points gained');                                   
                $("#form").submit()


 }</script>

 foreach ($usermeta as $post) {

 <form method="post" id="form" action="<?php the_permalink(); ?>">

 <div id="mydiv">

 click here to earn points.

 </div>

 <input type="hidden" name="points" id="points" value="<?php echo $post->points; ?>"                         class="regular-text" />

 </form>

 }

【问题讨论】:

  • 问题出在表单 id 上,因为您对所有表单都使用了相同的 id(顺便说一句,这不是有效的 w3c 标准),解决方案是使用 $(this).parents("form:first") .submit(),但我认为无论如何您都应该为每个表单提供唯一 ID

标签: php jquery sql ajax


【解决方案1】:

每个表单都有相同的 id。您需要确保表单的 id 是唯一的。

我没有足够的代表发表评论,但这是你可以做的。

<script>
    $(document).ready(function() {
        $('.mydiv').click(function() {
            $(this).text('Points gained').closest('.form').submit();
        });
    });
</script>

<?php foreach ($usermeta as $post): ?>

<form method="post" class="form" action="<?php the_permalink(); ?>">

    <div class="mydiv">
        click here to earn points.
    </div>
    <input type="hidden" name="points" class="points" value="<?php echo $post->points; ?>" class="regular-text" />
</form>
<?php endforeach; ?>

【讨论】:

  • 您好,感谢您的回答,因为 sql 按点生成用户 ID,我使用 $post->user_id 正确地给了我 ID。然后我改变 $("#formuser_id").submit() 和 id="formuser_id; ?>"> 和 foreach 生成 form1 form2 form3 .. .但是脚本可以定位正确..并且总是提交最后一个表单........
  • 我尝试了你的方法,但不起作用,总是提交最后一个表单,文本出现在最后一个 div 上... :( 还是谢谢你
【解决方案2】:

我找到了这样的解决方案,

在 foreach 之前我明确了

 $i = 1; 

然后

<form class="<?php echo $i; ?>"> 

然后在表单末尾但在 foreach 结束标记之前

$i ++; 

所以现在我有

<form class="1">
<form class="2">
<form class="3">
<form class="4">

以此类推,然后我从 sql select 设置限制 10 中设置显示元素的限制。

【讨论】:

    最近更新 更多