从php下拉菜单中创建项目列表

时间:2013-02-13 15:25:20

标签: php javascript jquery html drop-down-menu

我一直在尝试实施一个下拉菜单,如果做出选择,那么它会在下拉列表上方列出所选项目。

我正在使用以下网站

http://odyniec.net/articles/multiple-select-fields/

我正在使用的特定部分位于“Fancy Javascript Method”下面,但我将代码放在jsfiddle中,它不能正常显示。

任何人都可以帮助我吗?任何帮助表示赞赏。

谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个:

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="content-type" content="text/html" />
    <title>Ingredients</title>

    <script type="text/javascript">
    <!--
        function selectIngredient(select)
    {
      var option = select.options[select.selectedIndex];
      var ul = select.parentNode.getElementsByTagName('ul')[0];

      var choices = ul.getElementsByTagName('input');
      for (var i = 0; i < choices.length; i++)
        if (choices[i].value == option.value)
          return;

      var li = document.createElement('li');
      var input = document.createElement('input');
      var text = document.createTextNode(option.firstChild.data);

      input.type = 'hidden';
      input.name = 'ingredients[]';
      input.value = option.value;

      li.appendChild(input);
      li.appendChild(text);
      li.setAttribute('onclick', 'this.parentNode.removeChild(this);');     

      ul.appendChild(li);
    }
    -->
    </script>
</head>

<body>

<?php

if ( isset( $_POST['ingredients'] ) ) {

    if ( !empty( $_POST['ingredients'] ) ) {

        echo '<fieldset><legend>Your ingredients</legend>';

        foreach ( $_POST['ingredients'] as $ingredient ) {

            echo '<p>- ', $ingredient, '</p>';

        }

        echo '</fieldset>';

    } else {

        echo '<p>No ingredients selected!</p>';

    }

}

?>
<form action="" method="post">

<ul>
 <li onclick="this.parentNode.removeChild(this);">
  <input type="hidden" name="ingredients[]" value="Cheese" />
  Cheese
 </li>
 <li onclick="this.parentNode.removeChild(this);">
  <input type="hidden" name="ingredients[]" value="Ham" />
  Ham
 </li>
 <li onclick="this.parentNode.removeChild(this);">
  <input type="hidden" name="ingredients[]" value="Mushrooms" />
  Mushrooms
 </li>
</ul>

<select onchange="selectIngredient(this);">
 <option value="Cheese">Cheese</option>
 <option value="Olives">Olives</option>
 <option value="Pepperoni">Pepperoni</option>
</select>

<input type="submit" value="go" />
</form>
</body>
</html>

答案 1 :(得分:0)

我把它清理了一下,代码稍微偏了。

function selectIngredient(select) {
    var value = select.val();
    var $ul = $(select).prev('ul');

  if ($ul.find('input[value=' + value + ']').length == 0)
    $ul.append('<li onclick="$(this).remove();">' +
      '<input type="hidden" name="ingredients[]" value="' + 
      value + '" /> ' + value + '</li>');
}

$('select.options').on('change' , function() {
    selectIngredient($(this)); 
});

演示:http://jsfiddle.net/c5s9c/