我有一个表格,其中电子邮件是可选的。要控制该复选框。如果取消选中该复选框,则将禁用电子邮件文本框,因此不会在提交时发布。但是,在下一页上,如果我有如下所示的代码,如果禁用了电子邮件文本框,则会出现错误。
if (isset($_POST['submit']))
{
$_SESSION["email"] = $_REQUEST['YourEMail'];
....
}
为了解决这个问题,除了将其值设置为空字符串之外,我在提交之前以编程方式启用已禁用的电子邮件文本框。该代码如下所示。
document.getElementById('YourEMail').disabled = false
document.getElementById('YourEMail').value = ''
但是,仍然存在一个恼人的问题,即,如果用户返回原始页面,则启用电子邮件文本框,因为我在提交表单之前启用了它。但是,我希望在这种情况下禁用它。怎么样,我可以实现吗?或者,在下一页中,我可以看到该电子邮箱已被禁用,因此甚至没有尝试阅读$_REQUEST['YourEmail']
?
答案 0 :(得分:4)
如果字段“#YourEMail”是可选的,则可以检查PHP中是否存在。不需要使用JS启用/禁用该字段。
if (isset($_POST['submit']))
{
if (isset($_REQUEST['YourEMail']) && !empty($_REQUEST['YourEMail'])){
$_SESSION["email"] = $_REQUEST['YourEMail'];
}
}
答案 1 :(得分:1)
你可以使用三元测试这样测试:
(isset($_REQUEST['YourEMail']) && !empty($_REQUEST['YourEMail'])) ? $_SESSION["email"] = $_REQUEST['YourEMail'] : FALSE;
如果设置了请求变量,这只会设置会话变量。