如何查看表单元素是否未发布

时间:2016-07-29 20:27:59

标签: javascript php web

我有一个表格,其中电子邮件是可选的。要控制该复选框。如果取消选中该复选框,则将禁用电子邮件文本框,因此不会在提交时发布。但是,在下一页上,如果我有如下所示的代码,如果禁用了电子邮件文本框,则会出现错误。

if (isset($_POST['submit'])) 
{ 
    $_SESSION["email"]      = $_REQUEST['YourEMail'];
    ....
}

为了解决这个问题,除了将其值设置为空字符串之外,我在提交之前以编程方式启用已禁用的电子邮件文本框。该代码如下所示。

document.getElementById('YourEMail').disabled = false
document.getElementById('YourEMail').value = ''

但是,仍然存在一个恼人的问题,即,如果用户返回原始页面,则启用电子邮件文本框,因为我在提交表单之前启用了它。但是,我希望在这种情况下禁用它。怎么样,我可以实现吗?或者,在下一页中,我可以看到该电子邮箱已被禁用,因此甚至没有尝试阅读$_REQUEST['YourEmail']

2 个答案:

答案 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;

如果设置了请求变量,这只会设置会话变量。