【问题标题】:PHP - Hide Previously Selected Category from Category 2 Option ListPHP - 从类别 2 选项列表中隐藏先前选择的类别
【发布时间】:2013-10-03 17:29:33
【问题描述】:

这很简单。

当用户填写表单时,他们可以将列表分为两类。一旦用户从下拉菜单中选择了他们的第一个类别。如何使该类别不在第二个下拉菜单中的选项。

问题是,用户可以选择两次相同的类别。这是我的基础:

            <li>
              <select name="category_1" tabindex="5">
                <option value="">Choose a category...</option>
                {foreach from=$cats item='cat'}
                  {if $cat.active}
                    <option value="{$cat.id}"{if $cat.id == $smarty.session.formVars.category_1} selected="selected"{/if}>{$cat.name} ({$cat.description})</option>
                  {/if}
                {/foreach}
              </select>
            </li>

            {if $smarty.session.formVars.category_2}
            <li>
              <select name="category_2">
                <option>Choose a category...</option>
                {foreach from=$cats item='cat'}
                  {if $cat.active}
                    <option value="{$cat.id}"{if $cat.id == $smarty.session.formVars.category_2} selected="selected"{/if}>{$cat.name} ({$cat.description})</option>
                  {/if}
                {/foreach}
              </select>
              <a href='#' class="category_delete">x</a>
            </li>
            {/if}

这是当前与之配套的 JS:

// Build category options
var cat_master = "";
$("#cat_master li").each(function(index, element) {
  cat_master += "<option value='" + $(element).find(".cat_id").text() + "'>" + $(element).find(".cat_name").text() + "</option>";
});

$(".category_add").click(function(e) {

  var cat_count = $("#categories > li").size();

  if (cat_count < AuthJ.Post.category_limit) {

    var next_cat = cat_count + 1;
    var new_select = "<select name='category_" + next_cat + "'><option value=''>Choose a category ...</option>" + cat_master + "</select>";

    $("#categories").append("<li>" + new_select + "</li>");

    // TODO: Remove previously selected categories from the new options list

    if (cat_count == (AuthJ.Post.category_limit - 1)) {
      $(this).hide(); // Hide the add new category link if we're at the category limit
    }

    $('<a href="#" class="category_delete">x</a>')
      .click(function(e){ deleteCategory(e, this); })
      .show()
      .appendTo('#categories > li:last');
  }

  e.preventDefault();
});

【问题讨论】:

  • 这个对应的jQuery代码在哪里?
  • 编辑初始问题以包括在内。
  • 您看过下面发布的解决方案了吗?您是否在应用程序中使用 MySQL/数据库?

标签: javascript php jquery filter categories


【解决方案1】:

在下拉 1 的 on change 事件中,在 value_in_first_drop_down 中获取下拉 1 的值,并使用以下语法从 second frop down 中删除

$("#drop_down_2_id option[value=value_in_first_drop_down]").remove();

当用户从第一个下拉菜单更改他的选项选择时,您仍然需要处理这种情况。因为首先删除的元素必须重新添加,然后新选择的元素将从第二个下拉列表中删除

【讨论】:

    猜你喜欢
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    相关资源
    最近更新 更多