jquery Multiselect插件实现操作多选列表框

Multiselect有以下功能特性:

可以将列表框左右两边的项进行移动(互换)。

可以通过双击事件移动列表框中的项。

可以设置已选项目的最大数。

可以自定义外观样式。

怎样使用?

1、准备jquery和jquery.multiselect2side插件以及CSS样式。

 代码如下 复制代码

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript" src="js/jquery.multiselect2side.js"></script> 
<link rel="stylesheet" type="text/css" href="jquery.multiselect2side.css" /> 

插件和样式文件在DEMO中已经包含,您可以下载整个DEMO就可以使用。

2、XHTML。

 代码如下 复制代码

<select name="liOption[]" id='liOption' multiple='multiple' size='8' > 
    <option value="PHP">PHP</option> 
    <option value="MYSQL">MYSQL</option> 
    <option value="ASP.NET">ASP.NET</option> 
    <option value="XHTML">XHTML</option> 
    <option value="CSS">CSS</option> 
    <option value="JQUERY">JQUERY</option> 
</select> 

我假设列表框中已存在一些静态项,这些数据可以通过动态加载进来。如果默认已经有选择的项,则看将option的属性selected设置为"selected"。如:

 代码如下 复制代码

<option value="PHP" selected="selected">PHP</option> 

3、应用multiselect插件。

 代码如下 复制代码

$(function(){ 
   $("#liOption").multiselect2side({ 
        selectedPosition: 'right', 
        moveOptions: false, 
        labelsx: '待选区', 
        labeldx: '已选区' 
   }); 
}); 

multiselect提供了一些属性的设置,selectedPosition:选择项的位置,默认为right,即最终获取选择的值是右边的列表框。moveOptions:移动选项,可以用来给选项排序,实际应用意义不大,这里设置为false。labelsx和labeldx是用来设置左右两个列表框的标题,如果不需要可设置为空。maxSelected:最大选项数,即最多只能选择几项

完全实例

 代码如下 复制代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="多选列表框,jquery插件" />
<title>操作多选列表框</title>
<link rel="stylesheet" type="text/css" href="../css/main.css" />
<link rel="stylesheet" type="text/css" href="jquery.multiselect2side.css" />
<style type="text/css">
.demo{width:600px; margin:40px auto; color:#424242; background:#fff}
#sel{ overflow:hidden}
</style>
<script type="text/javascript" src="../js/jquery.js"></script>
<script type="text/javascript" src="jquery.multiselect2side.js"></script>
<script type="text/javascript">
$(function(){
   $("#liOption").multiselect2side({
     selectedPosition: 'right',
     moveOptions: false,
  labelsx: '',
  labeldx: ''
   });
});
</script>
</head>

<body>

<div id="main">
  <h2 class="top_title"><a href="http://www.helloweba.com/view-blog-58.html">Multiselect:操作多选列表框</a></h2>
  <div class="demo">
    <form id="sel_form" action="posts.php" method="post">
     <div id="sel">
      <select name="liOption[]" id='liOption' multiple='multiple' size='8' >
        <option value="PHP">PHP</option>
        <option value="MYSQL">MYSQL</option>
        <option value="ASP.NET">ASP.NET</option>
        <option value="XHTML">XHTML</option>
        <option value="CSS">CSS</option>
        <option value="JQUERY">JQUERY</option>
      </select>
     </div>
     <input type="submit" class="btn" value="提 交" />
     </form>
  </div>
 
</div>

</body>
</html>

根据上面的实例我们来看一个PHP+Mysql+jQuery实现查询和列表框选择操作

XHTML

 代码如下 复制代码

<form id="sel_form" action="post.php" method="post"> 
   <p><input type="text" name="keys" id="keys" value="输入姓名或手机号码" onclick="this.value=''" /> 
    <input type="button" id="searchOption" value="搜索" /> <span id="msg_ser"></span></p> 
   <div id="sel"> 
   <select name="liOption[]" id='liOption' multiple='multiple' size='8'> 
   </select> 
   </div> 
   <input type="submit" value="提 交" /> 
</form> 

说明,HTML内容是一个表单,里面放置有一个查询输入框,和一个列表框,以及相关按钮。

MYSQL数据表结构

 代码如下 复制代码

CREATE TABLE IF NOT EXISTS `t_mult` ( 
  `id` int(11) NOT NULL auto_increment, 
  `username` varchar(32) NOT NULL, 
  `phone` varchar(20) NOT NULL, 
  PRIMARY KEY  (`id`) 
) ENGINE=MyISAM  DEFAULT CHARSET=utf8; 

表t_mult是一张联系人资料表,包括姓名和手机号码字段。

CSS

 代码如下 复制代码

<link rel="stylesheet" type="text/css" href="jquery.multiselect2side.css" /> 

本例中只加载了Multiselect插件所需的样式文件,其他CSS大家可以自行设计。

JAVASCRIPT

首先需要引用本例所需的两个js文件。

 代码如下 复制代码

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript" src="js/jquery.multiselect2side.js"></script> 
<link rel="stylesheet" type="text/css" href="jquery.multiselect2side.css" /> 

接着我们来调用Multiselect插件。

 代码如下 复制代码

$("#liOption").multiselect2side({ 
    selectedPosition: 'right', 
    moveOptions: false, 
    labelsx: '待选区', 
    labeldx: '已选区' 
}); 

关于Multiselect的应用,如果不熟悉的可以查看之前的文章:Multiselect:操作多选列表框

然后我们来写搜索按钮进行Ajax查询数据的操作。

 代码如下 复制代码

$("#searchOption").click(function(){ 
    var keys=$("#keys").val(); 
    $.ajax({ 
         type: "POST", 
         url: "action.php", 
         data: "title="+keys, 
         success: function(msg){ 
            if(msg==1){ 
                $("#msg_ser").show().html("没有记录!"); 
            }else{ 
                $("#liOptionms2side__sx").html(msg); 
                $("#msg_ser").html(""); 
            } 
         } 
    }); 
    $("#msg_ser").ajaxSend(function(event, request, settings){ 
        $(this).html(""); 
    }); 
}); 

说明,当点击搜索按钮时,进行的是Ajax异步操作,JAVASCRIPT将获取的搜索框的输入值,以POST方式传递给后台程序action.php处理,处理后,返回不同的结果给JAVASCRIPT,如果返回1,HTML页面会提示“没有记录”,反之,则将结果输出给左边列表框(待选区):liOptionms2side__sx。注意关键的地方到了,为什么列表框不是XHTML离的liOption,而变成了liOptionms2side__sx了呢?这个要从Multiselect插件说起,Multiselect插件其实就是将一个列表框装换成左右两个列表框,已供相关操作,通过查看其插件代码不难发现,左边的列表框名为:liOptionms2side__sx,右边列表框(已选区)名为:liOptionms2side__dx,后面会用到。

PHP

首先来看action.php的处理。

第一步是连接数据库。

 代码如下 复制代码

$conn=mysql_connect("localhost","root",""); 
mysql_select_db("demo",$conn); 
mysql_query("SET names UTF8"); 

第二步读取数据,并输出。通过检测搜索框传来的值,构造不同的SQL语句,并将数据返回输出,代码如下:

 代码如下 复制代码

$keys=trim($_POST['title']); 
$keys=mysql_real_escape_string($keys,$conn); 
if(!empty($keys)){ 
        $sql="select * from t_mult where username like '%$keys%' or phone='$keys'"; 
}else{ 
        $sql="select * from t_mult"; 

$query=mysql_query($sql); 
$count=mysql_num_rows($query); 
if($count>0){ 
      while($row=mysql_fetch_array($query)){ 
          $str.="<option value='".$row['id']."'>".$row['username']."-".$row['phone']."</option>"; 
    } 
    echo $str; 
}else{ 
      echo "1"; 

最后还有一个提交操作,后台post.php程序来获取最终提交的项的值。

 代码如下 复制代码

$selID=$_POST['liOptionms2side__dx']; 
if(!empty($selID)){ 
    $str=implode(",",$selID); 
    echo $str; 
}else{ 
    echo "没有选择任何项目!"; 

注意,我们获取的是右边列表框liOptionms2side__dx的值,而不是liOption的值。

时间: 2024-10-27 15:10:31

jquery Multiselect插件实现操作多选列表框的相关文章

多选列表框动态添加,移动,删除,全选等操作的简单实例

 本篇文章主要是对多选列表框动态添加,移动,删除,全选等操作的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助  代码如下: <% dim a a = split(Request.Form("sourceList"),",") Response.Write "Source:" & Request.Form("sourceList") & ubound(a) & "<

一个jqgrid与select结合实现的多选列表框

问题描述 我要实现如图所示的一个多选列表框,左边是一个jqgrid,右边是一个select.当点击"选择"的时候,左边的选中行消失,右边的select出现一行记录,这个已经搞定了,我不会的是,当我点击"删除"的时候,如何select的选中行消失,jqgrid中出现那行记录.貌似jqgrid没有让行隐藏的办法吧,我想用map,js中貌似也没得map,那我该怎么办呢? 问题补充:pigswimming 写道 解决方案 归根结底,你喜欢对左侧的jqgrid的local d

jQuery列表框插件imageselect.js jquery select美化用图片进行选择

 select默认的太难看了,在这用jquery 插件imageselect.js进行美化,就图片进行下拉菜单的选择 列表框插件imageselect.js jquery select美化用图片进行选择-jquery select 美化"> 这个网页特效代码如下:   <!DOCTYPE html> <head> <title>支持图片选择的jQuery列表框插件imageselect.js</title> <meta http-equ

jquery checkbox的相关操作总结_jquery

jquery checkbox的相关操作--全选.反选.获得所有选中的checkbox 1.全选 $("#btn1").click(function(){ $("input[name='checkbox']").attr("checked","true"); }) 2.取消全选(全不选) $("#btn2").click(function(){ $("input[name='checkbox']&

java的列表框

列表框与选择框有完全的不同,而不仅仅是当我们在激活选择框时的显示不同,列表框固定在屏幕的指定位置不会改变.另外,一个列表框允许多个选择:如果我们单击在超过一个的项目上,未选择的则表现为高亮度,我们可以选择象我们想要的一样的多.如果我们想察看项目列表,我们可以调用getSelectedItem()来产生一个被选择的项目列表.要想从一个组里删除一个项目,我们必须再一次的单击它.列表框,当然这里有一个问题就是它默认的动作是双击而不是单击.单击从组中增加或删除项目,双击调用action().解决这个问题

控件-怎么设置Jquery 多选下拉列表插件jquery multiselect 的高度?

问题描述 怎么设置Jquery 多选下拉列表插件jquery multiselect 的高度? 企业的代码是 .multiselect(); 库有用到jquery.jqueryui.jquery multiselect 试过在方法中,加height,minheight,但这个高度改变的是下拉列表的高度,不是控件的高度. 要怎么改变控件本身的高度呢? 控件的源码是 $.widget("ech.multiselect", { // default options options: { he

Jquery多选下拉列表插件jquery multiselect功能介绍及使用_jquery

有一个多选的需求,在网上找到了这个插件:multiselect https://github.com/ehynds/jquery-ui-multiselect-widget csdn博客上有这个插件的介绍,不少童鞋都问了这么个问题,怎么获取选中的值?真是个好问题,因为我在看demo的时候也发现了这个问题,呵呵! 先简单说说这个插件: jquery-multiselect 基于Jquery-ui的组件体系. 所以使用它的时候,先得导入jquery-ui相关的js和css哦 特性 •支持点击labe

PHP+Mysql+jQuery查询和列表框选择操作实例讲解_php技巧

本文讲解如何通过ajax查询mysql数据,并将返回的数据显示在待选列表中,再通过选择最终将选项加入到已选区,可以用在许多后台管理系统中.本文列表框的操作依赖jquery插件. HTML <form id="sel_form" action="post.php" method="post"> <p><input type="text" name="keys" id="

jQuery的插件列表(2010-1-25更新)_jquery

jQuery Scroll Follow   随屏幕滚动的层       点击查看Demo jScrollPane 自定义滚动条插件   点击查看Demo  jQuery树状菜单插件 jqueryflexselect下拉框自动提示  jQuery id标签 - 8种不同的很酷的JQuery菜单例子  jQuery ContextMenu:轻量级JQuery插件,可以自定义右键弹出的菜单 jQuery Flash Plugin-这个 jQuery插件可以让你嵌入Flas***** jQuery M