PHP,HTML以及"required"的相应和连续处理



一个简短的问题:我的表单

<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条件似乎都没有第二个或第三个等"必需"的验证,因为没有显示(显示:无)不起作用:

<?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
}
?>

表单中现有的"required"等等似乎覆盖了这个PHP构造。

我知道我可以使用一些JavaScript代码以不同的方式处理这个问题,但我想看看我是否不能将这个"必需"问题作为纯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可以处理"必需"的问题。所需输入中的单选按钮的值被保存到数据库中,然后使用一些好的PHP技术重新显示以读取数据库条目。因此显示了单选字段的条目。

到目前为止,这还可以。

但是,一旦我想对表1的内容进行更改并保存它们,我就会收到一个注意字段,用于填写表2中的"必需"输入,尽管没有显示。

这个HTML5操作符的"强度"似乎与使用…的任何显示限制无关。。。或者根本不相关。

是否有任何方法可以处理这个问题,因为只有在表2显示后才能对第二个(或第三个等)"必需"输入进行验证?

使用PHP显示不同输入的条件上下文(一个带有"required"标志,另一个没有)似乎都不起作用。它似乎也被"必需"所覆盖。

由于这个"必需"的业务似乎几乎没有记录,你们中间有人给我一些提示吗?

向致以最良好的问候

Markus

display:none意味着拥有存在但未显示的内容。我不知道这种特定的行为,但由于存在所需的字段,无论用户是否有机会,如果这些字段为空,浏览器都会抱怨。

有几种可能的变通方法,其中大多数都很难看,很难维护。required属性是为非常简单的表单设计的,在我看来,您的用例比那些更高级。我认为您应该用JavaScript函数编写验证逻辑。

如果变得非常复杂,您可以考虑使用几个库中的一个。

最新更新