我有一个php页面,顶部有一个日期字段,下面有多个表单需要访问该字段。我如何通过日期字段值与它是外部的形式?下面是我想要完成的一个简单的例子:
<body>
<p>Outside Date: <input type="date" id="outsideDate" name="outsideDate"></p>
<form action='' method="post">
<p>Inside Date: <input type="date" id="insideDate" name="insideDate"></p>
<input type="submit" name="submit" value="Test It">
</form>
<?php
if (isset($_POST['submit'])) {
// See which date I can access
$outDate = $_POST['outsideDate'];
$inDate = $_POST['insideDate'];
echo "Outside date is: " . $outDate;
echo "Inside date is: " . $inDate;
}
// Gives 'undefined index: outsideDate...line 16
// Then prints "Outside date is: Inside date is: 2015-08-02"
// (Note that NO date is printed for $outDate)
?>
</body>
我已经搜索了我认为是一个简单的问题,但似乎找不到一个答案,解决它。刚开始使用PHP,所以任何帮助都是非常感谢的。
thx
答案和问题一样简单,你不能那样做。
您有一些选择,最明显的是在合法的HTML表单中有一个适当命名的隐藏字段。
<input type="hidden" id="outsideDateForPhp" name="outsideDate">
,然后触发一个客户端js事件,以便当日期选择器在表单外部更改时,值被传输到表单内部的隐藏字段。
或者您可以在提交表单时进行此传输。这些都不是理想的,但是您可能有自己的理由不把它放在表单中。
你当然需要煞费心思地确保你发送的日期在PHP端被正确过滤,然后再对它做任何事情,比如把它放在数据库中,或者回显到屏幕上——不管它是来自隐藏字段还是日期选择器。
将outsideDate放入表单中,这样您就可以像您已经尝试过的那样检索它。
<form action='' method="post">
<p>Outside Date: <input type="date" id="outsideDate" name="outsideDate"></p>
<p>Inside Date: <input type="date" id="insideDate" name="insideDate"></p>
<input type="submit" name="submit" value="Test It">
</form>
在进一步阅读了你的文章后,这可能只是部分地解决了你的需求。如果您希望在每个字段中都是这种情况,则需要有几个隐藏字段,当文本输入原始日期框时更新(尝试jquery的keyup/keydown函数)
当你提交页面的时候,只有表单标签的所有数据将不会张贴在表单标签之外,这就是为什么你不能访问<input type="date" id="outsideDate" name="outsideDate">