美文网首页
拼音过滤选择器

拼音过滤选择器

作者: alue | 来源:发表于2022-06-08 22:44 被阅读0次

当选择器选项过多时,用过滤的方法可以有效减少备选项。

不过,用中文检索,用户往往还需要切换输入法。如果能够实现拼音过滤,那么用户体验就能上升一个档次。那么,如何实现拼音过滤呢?

利用拼音检索

这里有两种方式:后端实现前端实现

后端实现

后端如果采用Django等Python框架的话,可以采用 pypinyin, 完成汉字转拼音。
最直接的方式,是给模型额外增加一个pinyin字段,然后重载 save 方法,完成拼音转换。
为了方便用户用首字母检索,还可以增加一个 pinyin_shortcut 字段,用来存首字母缩写。
简单示例如下:

class Country(models.Model):  
    """ 国家或地区 """    
    name = models.CharField('国家/地区名称', max_length=20, unique=True)  
    code = models.CharField('国家/地区编码', max_length=8, unique=True)  
    pinyin = models.CharField(max_length=80, verbose_name='拼音', help_text='空格隔开, 用于快速搜索')  
    pinyin_shortcut = models.CharField(max_length=20, verbose_name='拼音首字母缩写')  
  
    def save(self, *args, **kwargs):  
        pinyin_list = lazy_pinyin(self.name)  
        self.pinyin = ' '.join(pinyin_list)  
        self.pinyin_shortcut = ''.join([w[0] for w in pinyin_list])  
        super().save(*args, **kwargs)
 
    

这样,只用转换一次,后面用户的请求就不再需要额外的计算,性能比较好。
如果后端不具备pinyin转换能力,那么前端自己也可以完成这个功能。

前端实现

可以采用 tiny-pinyin 或者 pinyin.js 前端库,在客户端实现汉字转拼音。

有了pinyin字段之后,前端的下拉框就可以依照汉字、拼音、拼音缩写的方式,实现备选项的过滤了。

options =  allCountries  
  .filter(  
    (c) =>  
      c.name.startsWith(s) ||  
      c.pinyin.startsWith(s) ||  
      c.pinyin_shortcut.startsWith(s) ||  
      c.pinyin.split(" ").join("").startsWith(s)  
  )  .map((c) => ({  
    label: c.name,  
    value: c.code,  
  }));



相关文章

  • 拼音过滤选择器

    当选择器选项过多时,用过滤的方法可以有效减少备选项。 不过,用中文检索,用户往往还需要切换输入法。如果能够实现拼音...

  • jQuery选择器

    基本选择器 层次选择器 过滤选择器 基本过滤选择器 内容过滤选择器 可见性过滤选择器 属性过滤选择器 子元素过滤选...

  • JQuery常用的选择器总结分类

    一、基本选择器 二、层次选择器 三、过滤选择器 四、内容过滤选择器 五、可见性过滤选择器 六、属性过滤选择器 七、...

  • jQuery 选择器学习

    一、基本选择器 二、层次选择器 三、过滤选择器 1、基本过滤选择器 2、内容过滤选择器 3、可见性过滤选择器 4、...

  • JQ选择器

    基本选择器 层次选择器 基本过滤选择器 内容过滤选择器 可见性过滤选择器 属性过滤选择器 还有其他多种不常用属性过...

  • JQuery选择器

    1.基本选择器 2.层次选择器 3.基本过滤选择器 4.内容过滤选择器 5.可见性过滤选择器 6.属性过滤选择器 ...

  • 常用选择器测试代码

    常用基本选择器 常用常用层次选择器 常用基本过滤选择器 常用基本内容过滤选择器以及可见性过滤选择器 常用的属性过滤...

  • jQuery相关复习

    jQuery相关 jQuery选择器 参考手册 基本选择器 层次选择器 过滤选择器 可见性过滤选择器 属性过滤选择...

  • jQuery中的选择器

    css选择器 层级选择器 表单选择器 基本过滤器 内容过滤器 属性过滤器 子元素过滤器 可见性过滤选择器 表单属性...

  • jQuery 选择器

    1.基本选择器 2.层级选择器 3.简单过滤选择器 4.层级过滤选择器 举例: 5.列表过滤选择器 6.内容过滤选...

网友评论

      本文标题:拼音过滤选择器

      本文链接:https://www.haomeiwen.com/subject/nnrpmrtx.html