gpt4 book ai didi

Javascript 添加的表单元素无法通过 $_POST 获得

转载 作者:行者123 更新时间:2023-12-03 08:49:57 29 4
gpt4 key购买 nike

我在表单中使用单选按钮来隐藏/显示联系人表单中的成员 ID 字段。问题是,当 javascript 更改 html 中包含的隐藏 id 字段(该字段设置为“无”值)时,该字段将不再通过 post 可用,即使在选中“无”单选框时 javascript 将其更改回原始值也是如此。请帮忙,我是 JavaScript 新手,谢谢。

相关表单代码:

echo '<tr><td>IVAO Member:</td><td><input type="radio" name="ivao" value="yes" onchange="ivaoVID()">Yes | <input type="radio" name="ivao" value="no" onchange="ivaoVID()" checked>No</td></tr>';
echo '<tr id="ivaovid"><input type="hidden" name="vid" id="vid" value="None"></tr>';

Javascript:

function ivaoVID() {
var selected = document.getElementsByName("ivao");
var row = document.getElementById("ivaovid");
for(i = 0; i <selected.length; i++) {
if (selected[i].checked == true) {
if (selected[i].value == "yes") {
row.innerHTML = "<td>IVAO VID:</td><td><input type='text' name='vid' id='vid'></td>";
} else {
row.innerHTML ="<input type='hidden' name='vid' id='vid' value='None'>";
}
}
}
}

操作 PHP 文件:

public function submit(){
$model = new contactModel;
$name = isset($_POST['name']) ? $_POST['name']:$this->registry->getData('fname').' '.$this->registry->getData('lname');
$vid = isset($_POST['vid']) ? $_POST['vid']:$this->registry->getData('vid');
$email = isset($_POST['email']) ? $_POST['email']:$this->registry->getData('email');
$message = $_POST['message'];

echo $name . '<br> ' . $vid . '<br>' . $email . '<br>' . $message;
}

最佳答案

由于某种原因,像这样覆盖 HTML 会弄乱表单。不知道到底为什么,但我在 Chrome 和 IE 中看到了同样的情况。

如果您进入控制台并输入:

document.forms[0].vid

当您在更改单选按钮之前执行此操作时,您会得到一个结果,而当您在更改单选按钮之后执行此操作时,您会得到“未定义”。特别奇怪的是,如果你在控制台中输入:

document.getElementById("vid")

在这两种情况下您都会得到结果。

一种可能的替代方案是隐藏和显示“vid”文本输入,而不是尝试用隐藏输入覆盖它。为此,您需要更改 PHP 以编写“ivaovid”行的文本输入版本,然后将 JavaScript 更改为:

function ivaoVID() {
var selected = document.getElementsByName("ivao");
var row = document.getElementById("ivaovid");
var vid = document.getElementById("vid");
for(i = 0; i <selected.length; i++) {
if (selected[i].checked == true) {
if (selected[i].value == "yes") {
row.style.display = "";
vid.value = "";
} else {
row.style.display = "none";
vid.value = "None";
}
}
}
}

另一个选项是隐藏和显示文本输入而不修改值,并根据 $_POST['ivao'] 的值忽略 PHP 后处理程序中的值。

关于Javascript 添加的表单元素无法通过 $_POST 获得,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32727113/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com