一个简短的问题:我的表格
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST" name="formForm">
包含几个类似的区域,这些区域仅在第一个区域之后显示一次
<div id="xyz" style="display:none">
正在转换为
<div id="xyz" style="display:inline">
单击复选框。这一切都很好。
第一个区域包含以下内容:
<input type="radio" name="something1" required="required" value="1 etc." + additional PHP and JavaScript code />
现在,点击复选框以显示另一个此类区域,另一个
<input type="radio" name="something2" required="required" value="1 etc." + additional PHP and JavaScript code />
也存在。换句话说:所有这些区域分别包含一个HMTL5必需元素。
现在,似乎我使用的所有PHP条件都没有第二个或第三个等等。&#34;需要&#34;由于未显示而被验证(显示:无)不起作用:
<?php
if (condition1 && condition2) {
?>
<input type="radio" name="something" required="required" value="1 etc." + additional PHP and JavaScript code />
<?php
} elseif (condition3 && condition4) {
?>
<input type="radio" name="something" value="1 etc." + additional PHP and JavaScript code />
<?php
}
?>
好像现有的&#34;要求&#34;在表单中,等等这个PHP构造。
我知道我可以使用一些JavaScript代码以不同的方式处理这个问题,但我想看看我是否无法使用这个&#34;必需&#34;问题纯HTML5。
到目前为止,这里是模式化代码:
<?php
// some preconditions in PHP
// definitions of variables
// definitions of constants
// database connection
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style> ... </style>
<script> ... </script>
</head>
<body ...>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST" name="formForm" />
<table cellspacing="0" id="formContainer">
<?=siteHeader('some uestion, whatever')?>
<tr>
<td>
<table ... 1>
<... lots of HTML code, whatever ...>
<?php
if (condition1 && condition2) {
?>
<input type="radio" name="something1" **required="required"** value="1" + additional PHP and JavaScript code />
<?php
} elseif (condition3 && condition4) {
?>
<input type="radio" name="something1" value="2" + additional PHP and JavaScript code />
<?php
}
?>
< ... lots of other HTML code, whatsoever ...>
</table>
<div id="xyz" style="display:none">
<table ... 2>
<... lots of HTML code, whatever ...>
<?php
if (condition1 && condition2) {
?>
<input type="radio" name="something1" **required="required"** value="1" + additional PHP and JavaScript code />
<?php
} elseif (condition3 && condition4) {
?>
<input type="radio" name="something1" value="2" + additional PHP and JavaScript code />
<?php
}
?>
< ... lots of other HTML code, whatsoever ...>
</table>
</div>
<handling of submit, reset etc.>
</td>
<tr>
</table>
</form>
</body>
<?php
// other PHP aspects, such as jQuery definitions
?>
现在,表1可以处理&#34; required&#34;问题。所需输入中的单选按钮的值将保存到数据库中,然后使用一些好的PHP技术重新显示以读取数据库条目。因此显示无线电字段的条目。
到目前为止一切正常。
但是,一旦我想对表1的内容进行更改并保存它们,我会收到一个注意字段来填写&#34; required&#34;来自表2的输入虽然没有显示。
&#34;力量&#34;这个HTML5运算符似乎独立于使用...或根本不相关的任何显示限制。
有没有办法如何处理这个问题,因为验证第二(或第三等)&#34;需要&#34;输入只在表2显示后执行?
使用PHP显示不同输入的条件上下文(一个带有&#34;必需&#34;标志,另一个没有)的条件上下文似乎都不起作用。似乎也被#34; required&#34 ;.
覆盖了正如此&#34;要求&#34;业务似乎几乎没有记录,你们中间有人给我一些暗示吗?
祝你好运
马库斯
答案 0 :(得分:1)
display:none
意味着存在但不显示的东西。我不知道这个特定的行为,但由于存在必填字段,浏览器会抱怨它们是否为空,无论用户是否有机会这样做。
有几种可能的解决方法,其中大多数都难看且难以维护。 required
属性是为非常简单的表单设计的,在我看来,您的用例比那些更先进。我认为你应该在JavaScript函数中编写验证逻辑。
如果真的复杂,你可以考虑这几个库。