PHP、HTML 以及 "required" 的后续和连续处理
PHP, HTML and the consequential and consecutive handling of "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条件都没有第二个或第三个等"required"由于未显示而被验证(显示:none)不工作:
<?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" in , 等在表单中否决了这个 PHP 构造。
我知道我可以使用一些 JavaScript 代码以不同的方式处理这个问题,但我想看看我是否不能将这个 "required" 问题作为纯粹的 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
?>
现在,table 1 可以处理 "required" 问题。所需输入中的单选按钮的值被保存到数据库中,然后使用一些好的 PHP 技术重新显示以读取数据库条目。因此显示单选字段的条目。
目前为止一切正常。
但是一旦我想对 table 1 的内容进行更改并保存它们,我就会收到一个注意字段来填写 table 2 的 "required" 输入,尽管不是显示。
此 HTML5 运算符的 "strength" 似乎与使用 ... 的任何显示限制无关,或者与它完全不相关。
是否有任何方法可以处理此问题,因为第二个(或第三个等)"required" 输入的验证仅在显示 table 2 时执行?
使用 PHP 显示不同输入(一个带有 "required" 标志,另一个没有)的条件上下文似乎都不起作用。它似乎也被 "required".
覆盖了
由于这个 "required" 业务似乎很少被记录下来,你们中间有没有人可以给我一些提示?
此致
马库斯
display:none
的意思是有存在但不显示的东西。我不知道这种特定行为,但由于存在必填字段,如果它们留空,浏览器会抱怨,无论用户是否有机会这样做。
有几种可能的解决方法,其中大多数都很丑陋且难以维护。 required
属性是为非常简单的表单设计的,在我看来,您的用例比那些更高级。我认为您应该在 JavaScript 函数中编写验证逻辑。
如果它变得真的复杂,您可以考虑几个库中的一个。
一个简短的问题:我的表格
<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条件都没有第二个或第三个等"required"由于未显示而被验证(显示:none)不工作:
<?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" in , 等在表单中否决了这个 PHP 构造。
我知道我可以使用一些 JavaScript 代码以不同的方式处理这个问题,但我想看看我是否不能将这个 "required" 问题作为纯粹的 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
?>
现在,table 1 可以处理 "required" 问题。所需输入中的单选按钮的值被保存到数据库中,然后使用一些好的 PHP 技术重新显示以读取数据库条目。因此显示单选字段的条目。
目前为止一切正常。
但是一旦我想对 table 1 的内容进行更改并保存它们,我就会收到一个注意字段来填写 table 2 的 "required" 输入,尽管不是显示。
此 HTML5 运算符的 "strength" 似乎与使用 ... 的任何显示限制无关,或者与它完全不相关。
是否有任何方法可以处理此问题,因为第二个(或第三个等)"required" 输入的验证仅在显示 table 2 时执行?
使用 PHP 显示不同输入(一个带有 "required" 标志,另一个没有)的条件上下文似乎都不起作用。它似乎也被 "required".
覆盖了由于这个 "required" 业务似乎很少被记录下来,你们中间有没有人可以给我一些提示?
此致
马库斯
display:none
的意思是有存在但不显示的东西。我不知道这种特定行为,但由于存在必填字段,如果它们留空,浏览器会抱怨,无论用户是否有机会这样做。
有几种可能的解决方法,其中大多数都很丑陋且难以维护。 required
属性是为非常简单的表单设计的,在我看来,您的用例比那些更高级。我认为您应该在 JavaScript 函数中编写验证逻辑。
如果它变得真的复杂,您可以考虑几个库中的一个。