【问题标题】:How can a click of a button change the content of a drop down menu?单击按钮如何更改下拉菜单的内容?
【发布时间】:2009-07-15 14:32:00
【问题描述】:

我想让它在单击按钮时,下拉菜单中的某些值稍后会出现在同一文档中。

例如,如果有一个名为 Honda 的按钮,单击它会将下拉菜单中的内容更改为汽车的型号详细信息。

这怎么可能?

上下文:启用 PHP 的服务器上的网页

提前致谢!

【问题讨论】:

  • 我们可以了解一些上下文吗?这是网页、桌面应用吗?
  • 它在一个带有 php 和 javascript 启用服务器的网页上。谢谢!
  • AJAX 不是必需的。 ron8,你考虑过使用 jQuery 吗? jquery.com
  • jQuery上有什么功能可以完成?

标签: php javascript html


【解决方案1】:

我建议最简单的解决方案是 JavaScript。使用框架来完成如此简单的任务似乎超负荷:

<html>
<head><title>JS example</title></head>
<body>
<script type="text/javascript"><!--

  //
  var opt_one = new Array('blue', 'green', 'red');
  var opt_two = new Array('plaid', 'paisley', 'stripes');

  //
  function updateTarget() {
    var f = document.myform;
    var which_r = null;
    if (f) {

      // first option selected? ("One")
      if (f.trigger.value == '1') {
        which_r = opt_one;

      // ...or, second option selected? ("Two")
      } else if (f.trigger.value == '2') {
        which_r = opt_two;

      // no known option, hide the secondary popup
      } else {
        f.target.style.display = 'none';
      }

      // did we find secondary options for the selection?
      if (which_r) {

        // reset/clear the target pop-up
        f.target.innerHTML = '';

        // add each option
        for (var opt in which_r) {
          f.target.innerHTML += '<option>' + which_r[opt] + '</option>';
        }

        // display the secondary pop-up
        f.target.style.display = 'inline';
      }
    }
  } // updateTarget()

//-->
</script>
<form name="myform" action="#">
  <select name="trigger" onchange="updateTarget();">
    <option>Select one...</option>
    <option>-</option>
    <option value="1">One</option>
    <option value="2">Two</option>
  </select>
  <select name="target" style="display:none;">
  </select>
</form>
</body>
</html>

【讨论】:

    【解决方案2】:

    您可以使用 jquery 执行此操作,使用一个 PHP 后端脚本根据您单击的按钮填充选择框的值。

    一些简单的 HTML 开头:

    <form action="script.php">
      <button id="Honda" onClick="loadModelsForMake('Honda');">Honda</button>
      <button id="Toyota" onClick="loadModelsForMake('Toyota');">Toyota</button>
    
      <select name="models" id="models">
        <option value="">Please Select A Make</option>
      </select>
    </form>
    

    然后,您需要设置一个 PHP 脚本,以便在给定所选品牌的情况下为您提供适当的值列表。最好在后端执行此操作,这样您就不会在您的 javascript 代码中对内容进行硬编码。创建一个名为 models.php 的文件。它将查找查询字符串中定义的“make”变量,并返回该 make 的 JSON 模型数组。如果你愿意,你可以把它连接到一个模型数据库,这样你就不用硬编码了:

    <?php
    $models = array();
    if ($_GET['make'] == 'Toyota') {
      models[] = array(id: 0, name: 'Matrix'});
      models[] = array(id: 1, name: 'Yaris'});
    } else if ($_GET['make'] == 'Honda') {
      models[] = array(id: 0, name: 'Civic'});
      models[] = array(id: 1, name: 'Pilot'});
    }
    echo json_encode($models);
    ?>
    

    最后,您需要 JQuery 将它们连接在一起。将此脚本块添加到您的页面:

    <script type="text/javascript" charset="utf-8">
    function loadModelsForMake(carMake) {
        $.getJSON("/models.php", {make: carMake, ajax: 'true'}, function(json){
          var options = '';
          for (var i = 0; i < json.length; i++) {
            options += '<option value="' + json[i].id+ '">' + json[i].name + '</option>';
          }
          $("models").html(options);
        })
    }
    </script>
    

    当然要确保在页面中包含基本的 jQuery 脚本;)

    【讨论】:

      【解决方案3】:

      您需要使用 AJAX,而 jQuery 内置的函数可以让这变得更简单。

      对于按钮本身,您将使用 onclick 来启动请求。

      <input type="button" onclick="carRequest('honda');" />
      

      【讨论】:

      • 谢谢!我知道这一点,但是我需要功能信息。由于我对 Javascript 和 AJAX 的了解有限,我被严重卡住了
      • 好吧,我的朋友,我不能坐在这里为你写你的页面,在互联网上挖掘一些例子,试试看,如果你遇到困难,在这里发帖,我可以帮你一个特定的问题。
      • 虽然很蹩脚,但您可以为自己简化一些事情而不使用 AJAX。只是...畏缩...将您需要的所有值放在 JavaScript 变量中以开始(更多畏缩),然后按照 nathan 的示例。不过说真的,了解 ajax。
      猜你喜欢
      • 1970-01-01
      • 2021-06-21
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多