【问题标题】:Foreach Loop within a Form表单中的 Foreach 循环
【发布时间】:2019-06-14 09:48:04
【问题描述】:

我正在使用 wordpress 创建一个网站,我需要创建一个表单,允许用户从下拉列表中选择一个数字,然后使用该数据量填充表单

由于我是 wordpress 新手,我使用 Caldera Forms 插件来构建表单,但没有中继器或类似的东西使用

我不擅长用 php 来为此创建一个脚本,并且在网上找不到任何其他解决方案

如果我从下拉列表中选择 3,则需要在表单上显示以下内容


Sample 1 Date:[Current Date]
Code:[text]
Flock:[text]
Species:[text]
Age (days):[text]
House:[text]
Analysis Required:[text]

SAMPLE 2

Sample 2 Date:[Current Date]
Code:[text]
Flock:[text]
Species:[text]
Age (days):[text]
House:[text]
Analysis Required)[text]

SAMPLE 3

Sample 3 Date:[Current Date]
Code:[text]
Flock:[text]
Species:[text]
Age (days):[text]
House:[text]
Analysis Required:[text]```

edit: Caldera forms has a Conditional tab that allows you to add if statements 

【问题讨论】:

  • 您需要 javascript 来复制页面上的表单。您也可以通过 ajax 使用 PHP 来实现,但这并不实用。 Wordpress 附带 jQuery,所以这样做会更容易。
  • 我不认为插件有这个选项,但是......
  • @OliverMGrech 我是 php 和 javascript 新手,甚至不知道如何在 wordpress 中实现它
  • 我不知道任何简单的解决方案。我认为这可以通过很多 JS 行来解决。所有表格都相同,仅更改数字“Sample [number]”。因此,代替使用下拉菜单,您应该在“添加另一个示例”下方有一个示例表单和按钮,单击时只需创建另一个具有相同字段的 div。在提交时不要做默认表单,总线只是循环通过示例 div 并将所有内容放入单个数组 var samples = {'sample-1': {'code': 'code', 'Flock': 'text', .. }, ..} 将此发布到管理员 ajax 并在后端解析您想要的方式

标签: php jquery html wordpress forms


【解决方案1】:

所以,如果你决定不使用插件,这是前端的一部分,添加删除和提交示例https://jsfiddle.net/Beneris/ns7dq9Lz/39/

还需要在footer.php中添加ajax_url

<script>var ajax_url = "<?php echo admin_url( 'admin-ajax.php' ); ?>";</script>

以及处理提交数据的函数,到functions.php

add_action( 'wp_ajax_save_samples', 'ajax_save_samples' );
add_action( 'wp_ajax_nopriv_save_samples', 'ajax_save_samples' );

function ajax_save_samples() {
    $json= strip_tags($_POST['json']);
    $data = json_decode($json);
    foreach ($data as $d) {}
    exit;
}

【讨论】:

  • 只是为了确保 javascript + JQ 代码在哪个 js 文件夹中添加它还是我必须创建一个新文件夹?
  • 通常所有样式、js 和 php 函数都应该添加到您的站点激活的主题文件中。因此,请查看包含哪些 js 文件以加载和添加到这些文件中。或者在激活的主题资产文件夹中创建新文件并添加挂钩以加载该文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
  • 2019-02-08
  • 2013-08-26
  • 1970-01-01
  • 2013-07-16
  • 2016-09-26
相关资源
最近更新 更多