我有一个包含20个表单的网页。
它们都是隐藏的,直到您从下拉框中选择一个表单,然后表单才会出现。
每个表单都有自己的验证。问题是我已经在每个特定表单的自己的div中包含了每个表单的验证。
所以我想因为每个div都被隐藏了,所有其他隐藏形式的验证都无法正常工作......我有多错:|
任何方式只包含php文件包括何时不隐藏div?
答案 0 :(得分:3)
由于已经处理完所有内容以将所有内容发送到浏览器,因此您只能使用javascript。这样做的方法是将表单的验证绑定到该特定表单的onsubmit,因此事件只会触发正确的表单。
答案 1 :(得分:3)
简短回答:网络无法正常运行。
更长的答案:浏览器不包含PHP,服务器包含它并将HTML中的所有输出吐出到浏览器。浏览器只看到HTML输出,因此它可以看到并发送所有内容。
有几种解决方案。我建议确保每个div都有自己的表单标签,然后为每个div添加一个隐藏的输入,这样你的PHP脚本就可以决定它应该做什么验证。像这样:
<div id="formfoo">
<form method="POST" action="/your-script.php">
<input type="hidden" name="validate" value="formfoo" />
<!-- rest of your form -->
</form>
</div>
然后在PHP中:
if( $_POST['validate'] == 'formfoo' ) {
// validate fields in formfoo here.
}
希望有所帮助。
答案 2 :(得分:1)
PHP没有关于客户端大小或什么不可见的概念。你必须考虑一种不同的方法。
幸运的是,还有其他方法。
由于每个div都包含一个表单,因此您可以简单地让所有表单都包含一个隐藏字段(比如formid或其他内容),您可以检查该字段以确定提交的表单。
或者,您可以为表单上的每个提交控件指定一个唯一的名称,并检查在服务器端触发的提交按钮的名称。
答案 3 :(得分:1)
额外提示:
您可以将隐藏的div
中的表单元素设置为禁用:
<input type="text" name="bla" disabled="disabled" />
并在显示后通过javascript启用它们。
在提交表单时不会发送已禁用的元素。
....处理禁用/启用可能比分离表单和制作像Cfreak建议的区别服务器更加努力......