sumoselect插件

摘要:
由于项目的需要,我们研究了sumoselect插件。接下来,我们将简要介绍sumoselect。在百度上搜索“sumoselect.js”,找到的页面基本上有sumoselect的基本介绍,如下:简要介绍jquery.sumoselect是一个跨设备和跨浏览器的jquery下拉列表框插件。例如,官方sumoselect插件在移动模式下使用手机的select效果。为了响应这一要求,我修改了sumoselect.js文件和sumoselect.css文件。

由于项目需要,研究了下sumoselect插件,接下来简单介绍下sumoselect。

在百度上搜索“sumoselect.js”,查到的网页基本上都有对sumoselect的基本介绍,如下:

简单介绍

jquery.sumoselect是一款跨设备、跨浏览器的jQuery下拉列表框插件。该jQuery下拉列表框插件可以单选,也可以多选。它的样式可以通过CSS文件来自定义。它的最大特点是可以跨设备使用,所有设备上功能都是一致的。

该jQuery下拉列表框插件的特点有:

  • 可以进行单选,也可以进行多选。
  • 可以通过CSS文件来自定义样式。
  • 支持绝大多数的设备。
  • 根据设备智能渲染。
  • 在Android、IOS、Windows和其它设备上会自动渲染出该设备原生样式的下拉列表框。
  • 可以自定义提交数据的格式(多选可以通过 csv 或默认形式来提交)。
  • 支持Selected、Disabled和占位文本。
  • 易扩展,开发者可以很容易的创建新的组件。
  • 使用基本方法间隙管理如添加选项、删除选项、禁用、选择等。

该jQuery下拉列表框插件需要使用jQuery 1.8.3+版本,建议使用最新版本的jQuery。

浏览器和设备的支持

  • IE8+, Firefox 4+, Chrome, Safari 4+, Opera 11+(其它浏览器应该也能工作,但未经测试)
  • iOs 3+, Android 2.1+ , Windows Mobile(其它设备应该也可以工作,但未经测试)

使用方法

使用方法非常简单,可以在页面加载之后调用默认的调用方法:

$(document).ready(function () {
      $('.SlectBox').SumoSelect();
});   

也可以使用插件提供的参数来进行控制:

$(document).ready(function () {
  $('.SlectBox').SumoSelect({
    placeholder: 'This is a placeholder',
    csvDispCount: 3
  });
});      

配置参数

下面是该jQuery下拉列表框插件的可用参数:

参数类型描述
placeholderstring显示在select下拉列表框中的占位文本
csvDispCountint要显示的多个项的编号,使用逗号分隔。设置为0表示全选
captionFormatstring当选择的项大于csvDispCount设置的数目时显示的文本。默认为{0} Selected{0}会被替换为选择的项的总数
floatWidthint最小的设备宽度,如果小于这个宽度,下拉列表框将渲染为浮动弹出的效果
forceCustomRenderingbooleanForce the custom modal ( Floating list ) on all devices below floatWidth resolution.
nativeOnDeviceArray[string]从用户代理字符串中获取识别移动手机的关键字
outputAsCSVboolean设置为true则使用csv来提交数据
csvSepCharstring如果outputAsCSV设置为true,该选项用作它的分割符。
okCancelInMultiboolean在桌面模式中是否允许OK/Cancel按钮为多选模式。
triggerChangeCombinedbooleanIn Multiselect mode whether to trigger change event on individual selection of each item or on combined selection ( pressing of OK or Cancel button ).
selectAllboolean默认为false,在多选模式下是否显示全选按钮,官方js里说手机模式下不支持全选
selectAlltextstring   全选按钮显示模式下全选的显示文本
ok string默认为OK,确认按钮显示文本
cancelstring默认为Cancel,取消按钮显示文本

(以上基本为网页搜索结果)

参数的控制最好在页面中进行,而非在js文件中直接更改,但是因人而异。

官方提供的sumoselect插件,通过参数的调整,在桌面模式下效果还是很不错的,可以选择是否显示确定、取消按钮,根据需求设置下拉框浮动的最小宽度(floadWidth)等等,但是在手机模式下,效果就不是很理想。作为一名开发者,在软件操作方面一般不会觉得太复杂,而在用户角度则可能不然。例如官方提供的sumoselect插件在手机模式下使用的是手机自带的select效果。在多选模式下,往往会造成用户选择了多个items后,不知道该怎么操作了。如果在手机多选模式下也能像桌面模式那样可以设置确定取消按钮的显隐的话,效果会更好些。针对这一需求,我对sumoselect.js文件和sumoselect.css文件进行了修改。最终呈现效果如下

sumoselect插件第1张

手机模式下,跟桌面模式显示的一样,不同的是,在手机模式下浮动的话,增加了一个遮罩层,使效果更好些。

前台设置如下

$(function() {
    //初始化下拉框组件
    window.asd = $('#zone').SumoSelect({ 
        placeholder:"请选择",
        csvDispCount: 10,
        captionFormat:'选中 {0} 项',
        floatWidth:1200,//手机端均呈现浮动效果
        okCancelInMulti:true,
        ok:'确定',
        cancel:'取消',
        nativeOnDevice: ['Android', 'BlackBerry', 'iPhone', 'iPad', 'iPod', 'Opera Mini', 'IEMobile', 'Silk']
});

具体详见js文件和css文件。

需要注意的是,由于下拉框的结构是ul li结构,所以如果外层也设置了针对ul li的行高等显示属性的话,就会造成显示效果不尽人意。

items选择非选择的显示效果如上图,左边小方框是利用i元素,为其设置background实现的。

请参照如下代码

<style type="text/css">
        //设置行高
    .SumoSelect > .optWrapper.multiple > .options > li{
        line-height: 18px;
        height:18px;
    }
        //设置确定取消按钮的行高
    .SumoSelect > .optWrapper.multiple.okCancelInMulti > .MultiControls > p{
        line-height: 18px;
    }
        //选择框未选择时的背景设置
    .SumoSelect > .optWrapper.multiple > .options > li span i{
        background-image: none;
        background-size:auto;
    }
</style>

上述代码主要针对外层的css属性设置影响了下拉框的显示效果,为恢复默认显示效果进行的设置。如果要自定义行高等属性,请考虑items本身的padding/margin等属性的设置。

希望可以帮到更多的朋友,也欢迎大家提建议和问题

更多详细介绍请见http://hemantnegi.github.io/jquery.sumoselect/

插件下载地址http://files.cnblogs.com/files/wyynts/sumoselect.rar

免责声明:文章转载自《sumoselect插件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在做性能测试之前需要知道什么解决:Access denied for user 'root'@'localhost' (using password: YES)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用layui框架的select获取选中的值

在使用时需要注意:select标签的外层需要加上类名".layui-form" 接下来就是根据需求来改变下拉框的内容了,直接给select的option重新赋一次值,记得加上对应的value属性。这里要和layui.js动态加上的dd标签的lay-value属性一致 重点来了!!!如何获取下拉框选中的值呢?图又来了 当然也可以,通过option的va...

jQuery操作input值总结

  1、获取选中的值: 获取一组radio被选中项的值: var item = $("input[@name=items]:checked").val(); 获取select被选中项的文本: var item = $("select[@name=items] option[@selected]").text(); select下拉框的第二个元素为当...

[ PyQt入门教程 ] PyQt5基本控件使用:单选按钮、复选框、下拉框、文本框

本文主要介绍PyQt5界面最基本使用的单选按钮、复选框、下拉框三种控件的使用方法进行介绍。 1、RadioButton单选按钮/CheckBox复选框。需要知道如何判断单选按钮是否被选中。 2、ComboBox下拉框。需要知道如何对下拉框中的取值进行设置以及代码实现中如何获取用户选中的值。 带着这些问题下面开始介绍这RadioButton单选按钮、Chec...

【转】文本框(Textbox)和下拉框(Combobox)自动联想功能的实现

看见一大侠介绍这种联想的效果,很棒! 怎样使自己程序中的文本框或下拉框具有像百度和Google那样的自动联想功能?微软的TextBox和Combobox控件为我们提供了简便方法。 首先需要学习TextBox(或Combobox)的两个属性,一个属性是AutoCompleteMode,指定控件中使用的自动完成功能的模式,有四种模式,分别是: None:禁用控...

ie 9 select 下拉框 右侧 箭头

由于 不同浏览器的 select 选项的默认样式不同,为了样式统一性。 则 删去浏览器的默认样式 select.form-control { /*Chrome和Firefox里面的边框是不一样的,所以复写了一下*/ /*border: solid 1px #000;*/ /*很关键:将默认的select选择框样式清除*/ appear...

用PopupWindow做下拉框

    最近在做下拉框,本来想用spinner,可是spinner达不到项目要求,跟同学同事问了一圈,都在用popwindow, 网上看了一下,popwindow挺简单的,可定制性挺强的,符合我的要求,所以,借鉴网上看的代码,自己撸了一 遍。写篇博客以防忘记。     首先,先写个自定义布局,代码如下 <?xml version="1.0" enc...