PHP,HTML以及后续和连续处理"必需"

时间:2017-02-07 14:44:32

标签: php html5 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条件都没有第二个或第三个等等。&#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;业务似乎几乎没有记录,你们中间有人给我一些暗示吗?

祝你好运

马库斯

1 个答案:

答案 0 :(得分:1)

display:none意味着存在但不显示的东西。我不知道这个特定的行为,但由于存在必填字段,浏览器会抱怨它们是否为空,无论用户是否有机会这样做。

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

如果真的复杂,你可以考虑这几个库。