jQuery下拉美化搜索表单效果代码分享

在前端开发中,下拉菜单是一个非常重要的组件,而且多数情况下需要美化来使用户界面更加友好。本文将介绍如何使用jQuery实现下拉美化搜索表单效果,并分享完整的代码示例。

实现原理

我们需要实现的效果是:点击下拉框时,弹出一个可搜索的下拉菜单,用户可以通过输入搜索词来快速查找选项。另外,在选择一个选项后,下拉框应该能够正确地显示所选内容。

为了实现这个效果,我们需要做以下几个步骤:

  1. 首先,我们需要隐藏原生的下拉框,并用自定义样式替换它。

  2. 其次,我们需要创建一个新的下拉框,并将其放在原来的位置。这个下拉框应该包含一个输入框和一个显示选项的区域。

  3. 当用户输入时,我们需要根据输入内容过滤选项列表,并将结果显示在下拉框中。

  4. 当用户选择一个选项时,我们需要更新下拉框的值,并关闭下拉框。

代码实现

HTML代码

下面是HTML代码的结构:

---- -----------------------
  --------
    ------- ----------------------
    ------- ----------------------
    ------- ----------------------
  ---------
  ---- -------------------
    ------ ----------- ------------------ --------------------
    --- -------------------------
  ------
------

我们将原生的下拉框包裹在一个div中,并添加一个自定义的样式类.select-wrapper。下面是CSS代码:

CSS代码

--------------- -
  --------- ---------
  ------ ------
-

--------------- ------ -
  --------- ---------
  ----- --
  ---- --
  -------- --
-

----------- -
  --------- ---------
  ------ -----
  ------- -----
  ------- --- ----- -----
  ----------------- -----
-

----------- -
  ------ -----
  ------- -----
  ------- -----
  -------- -----
  -------- ----
-

------------ -
  --------- ---------
  ----- --
  ---- -----
  -------- ---
  ------ -----
  ----------- ------
  ----------- -----
  ----------- -----
  ------- --
  -------- --
  ----------------- -----
  ------- --- ----- -----
-

我们使用了绝对定位和透明度将原生的下拉框隐藏,然后创建了一个新的容器.select-box来显示自定义的下拉框。

下面是JavaScript代码:

JavaScript代码

------------ -
  --- ------- - ------------------ ---------
  --- ---------- - -----------------
  --- ---------- - -----------------
  --- ----------- - ------------------

  -- -------
  -------------------------------------- -
    --- ----- - --------------
    --- ---- - ---------------
    --- ------- - ---------------------------- ------------------
    ------------------------------
  ---

  -- --------
  ---------------------- ----------- -
    --------------------
    -------------------------------
    -------------------
    ------------------------------
  ---

  ----------------------- ---------- -
    -------------------------------
  ---

  -- --
  ---------------------- ---------- -
    --- ---------- - --------------
    -------------------------------------- -
      --- ---------- - -----------------------------
      -- --------------------------------------------- - --- -
        ---------------
      -

- ---------------------------------------------------------- --------
-------------------------------------------------------------------------------------