【问题标题】:PHP - Add a select if a option is selected in other selectPHP - 如果在其他选择中选择了一个选项,则添加一个选择
【发布时间】:2014-02-12 23:29:39
【问题描述】:

下面这段代码是用 PHP 编写的。

第二个<select> 必须出现只有在第一个中选择了 Fotografia 或 Filmagem

为什么它不起作用?

<select size="1" name="area">
    <option selected value="pergunta">Área de atuação</option>
    <option value="design">Design</option>
    <option value="software">Desenvolvimento de Software</option>
    <option value="web">Desenvolvimento WEB</option>
    <option value="videos">Edição e montagem de vídeos</option>
    <option value="filmagem">Filmagem</option>
    <option value="fotografia">Fotografia</option>
    <option value="informatica">Informática</option>
</select><br/><br/>

<?PHP
if(area == fotografia OR area == filmagem){
echo '
    <select size="1" name="equipamento" >
        <option selected value="pergunta">Possui equipamento?</option>
        <option value="sim">Sim</option>
        <option value="nao">Não</option>
    </select><br><br> ';
 } ?>

【问题讨论】:

  • PHP 是 SERVER-SIDE ... SELECT(更改)是 CLIENT SIDE ...
  • PHP 在服务器上被解释为@donald123 所述。您将需要客户端的 javascript 来执行此操作。同样在 php area 不会做任何事情
  • 不应该用 PHP 解决 javascript 问题

标签: php select option


【解决方案1】:

就像@donald123 说的:PHP 是 SERVER-SIDE ... SELECT(更改)是 CLIENT SIDE ..

因此您需要更正您的代码并使用 Javascript。除非您在为同一页面发送 POST 时需要验证(隐藏或显示)...like @Arian answer:

使用我的答案,您需要使用 jQuery(一个 Javascript 库)。如果您想要纯 JavaScript 方式,请尝试 see the @Yani answer below

<!-- In you header -->
<script type="text/javascript" src="jquery.min.js"></script>
<!-- / In your header -->

<select size="1" name="area" id="area-select">
  <option selected value="pergunta">Área de atuação</option>
  <option value="design">Design</option>
  <option value="software">Desenvolvimento de Software</option>
  <option value="web">Desenvolvimento WEB</option>
  <option value="videos">Edição e montagem de vídeos</option>
  <option value="filmagem">Filmagem</option>
  <option value="fotografia">Fotografia</option>
  <option value="informatica">Informática</option>
</select><br/><br/>

<select size="1" name="equipamento" id="equipamento" style="display: none;">
  <option selected value="pergunta">Possui equipamento?</option>
  <option value="sim">Sim</option>
  <option value="nao">Não</option>
</select>

<script type='text/javascript'>
  $(document).ready(function() {

    $('#area-select').change(function() {
      if ($(this).val() == 'fotografia' OR $(this).val() == 'filmagem') {
       $('#equipamento-select').show();
      } else {
        $('#equipamento-select').hide();
      }
    });

  });
</script>

【讨论】:

  • @lucas-ferraz 如果对你有用,别忘了标记我的答案已解决。
  • @PatrickMaciel-p4dev tnx 参考我的回答。我相信你有一个错字,jQuery 应该是 $('#area-select') 而不是 $('#area')。
【解决方案2】:

它不起作用,因为您混淆了 HTML/Javascript DOM 元素和 PHP 变量。

在 PHP 中无法访问 DOM 选择元素“区域”,因为 PHP 发生在服务器端(在该元素甚至可以访问之前)。

您需要使用 Javascript 和 CSS 等客户端方法来动态控制元素。

 <select size="1" name="area" id="area" onChange="onSelectChange()">
        <option selected value="pergunta">Área de atuação</option>
        <option value="design">Design</option>
        <option value="software">Desenvolvimento de Software</option>
        <option value="web">Desenvolvimento WEB</option>
        <option value="videos">Edição e montagem de vídeos</option>
        <option value="filmagem">Filmagem</option>
        <option value="fotografia">Fotografia</option>
        <option value="informatica">Informática</option>
    </select><br><br>

  <select size="1" name="equipamento" id="equipamento" style="display:none;">
        <option selected value="pergunta">Possui equipamento?</option>
        <option value="sim">Sim</option>
        <option value="nao">Não</option>
    </select><br><br>

<script>

function onSelectChange() {
    var value = document.getElementById("area").value;
    if ( (value == 'fotografia') || (value == 'filmagem')) {
        document.getElementById('equipamento').style.display = 'block';
    } else {
        document.getElementById('equipamento').style.display = 'none';
    }
}
</script>

此示例使用纯 Javascript。如果您使用的是 jQuery(一个 Javascript 库),请参阅下面的@Partick 答案。我没有包含 jQuery 示例,因为我不想仅仅为这 1 个简单任务创建对 jQuery 的不必要依赖。如果您打算经常操作 DOM 元素,我建议您使用 jQuery。我个人在每个需要客户端脚本的项目中都使用它。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 2018-03-20
    相关资源
    最近更新 更多