第 1 步:我有一个表单,其中输入字段将由 innerHTML 动态生成。
var d = document.getElementById("d1p_1");
d.innerHTML += "<input class='add' name='field_" + i + "' type='text'>";
第 2 步:现在我想将每个值的 php 变量回显到每个动态生成的输入字段。像这样的东西:
d.innerHTML += "<input class='add' name='field_" + i + "' type='text' value='"<?php echo $field_" + i + "; ?>" + "'>
我怎样才能实现这一目标?
提前致谢。
提供更多信息:
这是一个表单,用户可以在其中添加字段,具体取决于他需要和将添加的字段数量。现在,用户可能会添加比通常需要的更多的字段,并在 field_1 和 field_280 之间的某个位置输入数据。为了捕获他输入数据的 field_x,我需要回显该输入字段的值。
$field_1 = value of field_1 if given;
...
$field_280 = value of field_280 if given;
innerHTML 将通过计数器动态添加输入字段 i
。所以我不知道将在哪个字段上给出什么输入。这就是为什么我还需要动态生成 PHP echo 部分。喜欢:
<?php echo $field_" + i + "; ?>
整个过程:
表单 -> 首先只包含一个输入字段(用户将进行一些输入) -> 通过单击按钮,将添加更多输入字段(1 单击 1 个字段,用户在添加之前不需要填写数据其他字段) -> 现在想象用户将添加 3 个字段,并在第一个和第三个输入字段上给出输入 -> name="field_1"和 name="field_3"->
每个输入字段的名称由 i++
生成-> 该值为空,否则将发布表单 -> 现在用户将提交表单。
这意味着要回显的值将是 $field_3 = (isset($_POST['field_3'])) ? $_POST['field_3']; : '';
-> 这个变量对于所有 i
都存在因此每个变量都在 php 部分之前设置,但要捕获正确的输入 name="field_i"
与 $field_i
并回显此匹配是问题所在。
因此,通过单击“提交”,页面将重新加载,并且不再像以前那样只有一个输入字段,而是有 2 个输入字段。第一个是 name="field_1",第二个是 name="field_3",因为用户之前遗漏了输入 name="field_2"。因此 name="field_3"需要根据动态生成的 name="field_"+ i +"
来回显正确的值。这意味着当动态生成名称标签时,也需要动态生成 php 标签以相互匹配。
最佳答案
i 是一个 JavaScript 变量,因此将其包含在 php 声明中会给您带来问题
您可以按照如下方式从 php 代码中实现字符串连接
<?php
$field_="stavo";
?>
<script type="text/javascript">
var i=10;
var d = document.getElementById("d1p_1");
d.innerHTML+= "<input class='add' name='field_" + i + "' type='text'>";
d.innerHTML += "<input class='add' name='field_" + i + "' type='text' value='<?php echo $field_; ?>"+i+"'>";
</script>
当然,您的 Html 中必须包含此内容
<div id="d1p_1"></div>
关于javascript - innerHTML 中 php 的两步动态回显,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36532210/