【问题标题】:2 drop down menus w/o submit button2 个没有提交按钮的下拉菜单
【发布时间】:2012-02-20 05:39:02
【问题描述】:

我想知道如何提交两个没有提交按钮的下拉菜单。我想在选择第一个下拉菜单时填充第二个下拉菜单,然后能够回显第二个下拉菜单的选择。第二个下拉菜单的数据来自 mySQL 数据库。我在我的页面上使用了两种表单,每个下拉菜单一个。

    <form method="post" id="typeForm" name="typeForm" action="">
          <select name="filterType" onchange="document.getElementById('typeForm').submit()">
                   <option <?php if ($_POST['filterType'] == 'none') print 'selected '; ?> value="none">Filter by...</option>
                   <option <?php if ($_POST['filterType'] == 'employee') print 'selected '; ?> value="employee">Employee</option>
                   <option <?php if ($_POST['filterType'] == 'taskName') print 'selected '; ?> value="taskName">Task</option>
          </select>
          <noscript><input type="submit" value="Submit"/></noscript>
    </form>
    <form method="post" id="categoryForm" name="typeForm" action="">
          <select name="filterCategory" onchange="document.getElementById('categoryForm').submit()">
                    <option <?php if ($_POST['filterCategory'] == 'none') print 'selected '; ?> value="none"></option>
                    <?
                        $count2 = 0;
                        echo $rowsAffected2;
                        while ($count2<$rowsAffected2) {
                             echo "<option value='$filterName[$count2]'>$filterName[$count2]</option>";
                             $count2 = $count2 + 1;
                        }
                     ?>
           </select>
           <noscript><input type="submit" value="Submit"/></noscript>
     </form>

我可以毫无问题地提交第一个表单。它成功地将值检索到第二个下拉菜单中。但是从第二个菜单中选择一个值时,页面刷新,我留下了两个未选择的下拉菜单。我尝试回显 $_POST['filterCategory'] 并没有得到结果。我尝试使用 onchange="this.form.submit();"在这两种形式中,我仍然得到相同的结果。有没有办法在不使用 AJAX、JQuery 或任何复杂的 Javascript 脚本的情况下做到这一点?我需要在 PHP 中完全做到这一点。

我想避免第二次刷新,但仍然能够从第二次选择中收集 $_POST[''] 数据。

【问题讨论】:

    标签: php javascript drop-down-menu


    【解决方案1】:

    对两个选择使用相同的形式

    【讨论】:

    • 好的,但我需要这两种形式的 post 值。那怎么获得呢?我所做的是,我检查第一个下拉菜单的发布值,并根据来自 mySQL 数据库的该值填充第二个下拉菜单。并希望呼应从第二个下拉菜单中选择的数据。
    • 感谢您的建议。它有效,但只需要更多调整即可使其完美。
    【解决方案2】:

    您有两种方法可以做到这一点。
    您可以使用 AJAX 提交表单;这将阻止整个页面刷新,因此会丢失两个选择元素中的数据;这也是最酷的方式。

    使用单个表单,当提交第一个和第二个选择元素时,使用它们的值重新创建选择元素。
    更清洁的方法仍然是第一选择;至少,如果我必须这样做,我会使用它。

    【讨论】:

    • 在 AJAX 调用对我来说就像学习另一种语言时,我问过这个问题。我可能已经接触 PHP 几天了。另外,我曾要求在不使用 AJAX、JQuery 或任何复杂的 Javascript 脚本的情况下做到这一点。但是,是的,AJAX 在任何其他情况下都是正确的方法。
    • 很高兴你现在是 PHP 忍者 :-)。如果我的回答有意义,请给它评分。 :-)
    猜你喜欢
    • 1970-01-01
    • 2016-07-03
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 2020-04-28
    相关资源
    最近更新 更多