【问题标题】:PHP onclick on a select optionPHP onclick 选择选项
【发布时间】:2016-03-22 19:38:52
【问题描述】:

当我选择一个选项并单击按钮时,我想打开图像。为什么这不起作用?

<form action="#" method="post">
<select name="carlist">
  <option value="renault">Renault</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

<input name="submit" type="button" value="Show the car!" onclick="location.href='images/<?php echo($_POST['carlist']); ?>.jpg'" />
</form>

它只打开图像/.jpg,就像 PHP 代码不起作用一样。

【问题讨论】:

  • type="submit" 而不是按钮?

标签: javascript php html select option


【解决方案1】:

试试这个:

<form action="#" method="post">
<select id="carlist">
  <option value="renault">Renault</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

<input name="submit" type="button" value="Show the car!" onclick="location.href='images/' + document.getElementById('carlist').value + '.jpg'" />
</form>

根本不需要 PHP。

【讨论】:

    【解决方案2】:

    您似乎对 PHP 和 Javascript 的执行顺序感到困惑。您的 甚至在加载页面之前就已执行,因此没有定义 $_POST 变量。这就是为什么它被评估为一个空字符串。只有当您提交表单时,$_POST 才会包含您在连续页面加载时的表单数据。但是,您永远无法提交表单,因为 1)您没有带有 type="submit" 的按钮和 2)-即使您这样做了-执行 onclick 可能会阻止它-Javascript。

    要解决您的问题,您可能应该使用 Javascript 或 PHP,但不能同时使用。

    Javascript 解决方案:

    <select id="carlist">
      <option value="renault">Renault</option>
      <option value="saab">Saab</option>
      <option value="mercedes">Mercedes</option>
      <option value="audi">Audi</option>
    </select>
    <input type="button" onclick="location.href='images/'+document.getElementById('carlist').value+'.jpg';"/>
    

    PHP-解决方案:

    <?php if(isset($_POST["carlist"])) {header("Location: images/".$_POST["carlist"].".jpg");}?>
    <form action="#" method="post">
    <select name="carlist">
      <option value="renault">Renault</option>
      <option value="saab">Saab</option>
      <option value="mercedes">Mercedes</option>
      <option value="audi">Audi</option>
    </select>
    
    <input type="submit" value="Show the car!"/>
    </form>
    

    【讨论】:

      【解决方案3】:

      您需要更改类型按钮才能提交。因为按钮不运行 PHP 代码。但是如果您不想更改按钮以提交,那么您需要添加一些 javascript 来执行该过程。这是我编辑后的代码。

      <form action="#" method="post">
      <select name="carlist">
      <option value="renault">Renault</option>
      <option value="saab">Saab</option>
      <option value="mercedes">Mercedes</option>
      <option value="audi">Audi</option>
      </select>
      
      <input name="submit" type="submit" value="Show the car!" onclick="location.href='images/<?php echo($_POST['carlist']); ?>.jpg'" />
      </form>
      

      【讨论】:

      • 你是对的,但是如果我改变提交的类型,我必须写一些javascript。
      • 如果你需要写一些javascript,你可以写。
      【解决方案4】:

      PHP 是一种服务器端语言。这意味着您不能在浏览器内的客户端使用它。浏览器端(客户端)语言是 JavaScript,你需要用它来做这样的事情。当您的页面呈现 $_POST['carlist'] 为空(未设置)时,PHP 仅在呈现页面上运行。 因为您还没有通过提交包含 carlist 输入的表单从上一页发布 carlist 属性。正如 jayms 所说,您可以为您的选择标签设置一个 id,并通过 JavaScript 代码(如document.getElementbyId)获取它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-06
        • 2016-12-19
        • 2011-05-31
        • 1970-01-01
        • 2016-12-08
        • 1970-01-01
        相关资源
        最近更新 更多