`
jayghost
  • 浏览: 441707 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

jquery+jsp实现下拉复选框checkboxlist

    博客分类:
  • Java
 
阅读更多

因为业务需要,做一个下拉复选框,复选框里面的数据全是从数据库中取值的。从网上收了一下,没有找到比较官方的java版的下拉复选框,只搜到http://www.jb51.net/article/24012.htm里面用jQuery实现的效果,好吧,就用它吧……

 

为了方便使用,我把下拉复选框做成了jsp标签,具体过程如下:

 

1.创建Checkboxlist类继承自SimpleTagSupport,代码如下

public class Checkboxlist extends SimpleTagSupport{
	private String sql;
	private String column;
	private String label;
	private String inputId;
	private String inputName;
	private String inputStyle;
	private Boolean showNull;

	@Override
	public void doTag() throws JspException, IOException {
		JspWriter jspWriter= getJspContext().getOut();
                //利用传入的sql从数据库中取得resultSet 
		//以下是用来组装查询的下拉复选框
		
		jspWriter.append("<" + "script type='text/javascript'>");
		jspWriter.append("$(document).ready(function() {Jselect($('#").append(inputId).append("'),{bindid:'").append(inputId).append("',hoverclass:'hover',optionsbind:function(){return ").append(inputId).append("html();}});});");
		jspWriter.append("function ").append(inputId).append("html(){");
		jspWriter.append("var optionshtml=\"<table style='width:100%; border: solid 1px #000;background:#fff;' cellpadding='0' cellspacing='0'>\";");
		for (遍历resultSet) {
			String entry=resultSet每一行
			if (showNull) {
				jspWriter.append("optionshtml=optionshtml+\"<tr><td style='width:20px'><input type='checkbox' value='"+entry+"'/></td><td>"+entry+"</td></tr>\";");
			}else {
				if (!entry.trim().equals("")) {
					jspWriter.append("optionshtml=optionshtml+\"<tr><td style='width:20px'><input type='checkbox' value='"+entry+"'/></td><td>"+entry+"</td></tr>\";");
				}
			}
		}
		jspWriter.append("optionshtml=optionshtml+\"</table>\";");
		jspWriter.append("return optionshtml; }");
		jspWriter.append("</script>");
		jspWriter.append(label).append(":<input id='").append(inputId).append("' name='").append(inputName).append("' style='").append(inputStyle).append("' type='text' readonly='readonly'/>");
		jspWriter.flush();
	}

	public void setSql(String sql) {
		this.sql = sql;
	}

	public void setColumn(String column) {
		this.column = column;
	}
	
	public void setLabel(String label) {
		this.label = label;
	}

	public void setInputId(String inputId) {
		this.inputId = inputId;
	}

	public void setInputName(String inputName) {
		this.inputName = inputName;
	}

	public void setInputStyle(String inputStyle) {
		this.inputStyle = inputStyle;
	}

	public void setShowNull(Boolean showNull) {
		this.showNull = showNull;
	}

	public Boolean getShowNull() {
		return showNull;
	}
}
 

2.在WEB-INF下创建customtag.tld文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
                        "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
	<tlib-version>1.0</tlib-version>
	<jsp-version>1.2</jsp-version>
	<short-name>cm</short-name>

	<tag>
		<name>checkboxlist</name>
		<tag-class>com.ed.cm.util.customtag.Checkboxlist</tag-class>
		<body-content>empty</body-content>
		<attribute>
			<name>sql</name>
			<required>true</required>
			<description>传入的sql语句,用于构造复选框项</description>
		</attribute>
		<attribute>
			<name>column</name>
			<required>true</required>
		</attribute>
		<attribute>
			<name>label</name>
			<required>true</required>
			<description>下拉复选框前的文字</description>
		</attribute>
		<attribute>
			<name>inputId</name>
			<required>true</required>
			<description>下拉复选框的id属性</description>
		</attribute>
		<attribute>
			<name>inputName</name>
			<required>true</required>
			<description>下拉复选框的name属性</description>
		</attribute>
		<attribute>
			<name>inputStyle</name>
			<required>true</required>
			<description>下拉复选框的style属性,主要设置width</description>
		</attribute>
		<attribute>
			<name>showNull</name>
			<required>true</required>
			<type>Boolean</type>
			<description>数据库取值为null的是否显示</description>
		</attribute>
	</tag>
</taglib>
 

3.创建option_check.js:

(function($){ 
	$.showselect = { 
		init : function(o,options){ 
			var defaults = { 
				bindid : null, //事件绑定在bindid上 
				hoverclass:null, //鼠标移到选项时样式名称 
				optionsbind:function(){} //下拉框绑定函数 
			} 
			var options = $.extend(defaults,options); 
			if(options.optionsbind!=null){//如果绑定函数不为空 
				this._setbind(o,options); 
			} 
			if(options.bindid!=null){ 
				this._showcontrol(o,options); 
			} 
		}, 
		_showcontrol:function(o,options){//控制下拉框显示 
			$("#"+options.bindid).toggle(function(){ 
				$(o).next().slideDown(); 
			},function(){ 
				$(o).next().slideUp(); 
			})
		}, 
		_setbind:function(o,options){//绑定数据 
			var optionshtml="<div style='z-index: 999; position: absolute; height:130px; overflow:auto;'>" 
			+options.optionsbind()+"</div>"; 
			$(o).after(optionshtml); 
			var offset= $(o).offset(); 
			var w=$(o).width(); 
			$(o).next().css({top:offset.top+$(o).height()+7,left:offset.left,width:w}); 
			if(options.hoverclass!=null){ 
				$(o).next().find("tr").hover(function(){$(this).addClass(options.hoverclass);}, 
				function(){$(this).removeClass(options.hoverclass);}); 
			} 
			$(o).next().find("input[type=checkbox]").filter("[lang=checked]").each(function(){$(this).attr("checked","checked");}); 
			$(o).next().find("input[type=checkbox]").click(function(){ 
				var $ckoption=$(this).attr("checked"); 
				if($ckoption){ 
					$(this).attr("checked",""); 
				}else{ 
					$(this).attr("checked","checked"); 
				} 
			}); 
			$(o).next().find("tr").click(function(){ 
				var $ckflag=$(this).find("input[type=checkbox]"); 
				if($ckflag.attr("checked")){ 
					$ckflag.attr("checked",""); 
					$ckflag.attr("lang",""); 
				} 
				else{ 
					$ckflag.attr("checked","checked"); 
					$ckflag.attr("lang","checked"); 
				} 
				var selarray=new Array(); 
				$(o).next().find("input[type=checkbox]").each(function(){ 
					if($(this).attr("checked")) 
					selarray.push($(this).parent().next().text()); 
				}); 
				$(o).val(selarray.join(',')); 
			}); 
			$(o).next().hide(); 
		} 
	} 
	Jselect = function(o,json){ 
		$.showselect.init(o,json); 
	}; 
})(jQuery); 

 4.在jsp中使用,加入一行

<%@ taglib uri="/WEB-INF/customtag.tld" prefix="cm"%>
 添加css样式

<style type="text/css">
.hover 
{ 
background-color: #c0c0c0; 
color: #fff; 
} 
</style>

 引入jquery.js和option_check.js

使用时:

<cm:checkboxlist sql="SELECT XXX FROM XXX where XXX" column="XXX" label="XXX" inputId="XXX" inputName="XXX" inputStyle="width: 200px;" showNull="false"></cm:checkboxlist>
 5.ok,下拉复选框的样式确实有点丑,有兴趣的朋友可以修改一下,改的好看可以给我一份哈,我实在没有美工的天分╮(╯▽╰)╭

 

 

 

0
2
分享到:
评论
1 楼 jayghost 2011-09-03  
我可以很负责任的告诉大家,我已经把这个标签的前台换成了http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/的样子,方法类似,如果需要显示成中文,加上
	$(".multiselect").multiselect({
		checkAllText: "全选",
		uncheckAllText: "不全选",
		noneSelectedText: "请选择",
		selectedText: "选中#/#",
		minWidth: 150
	});

相关推荐

    jsp/html 实现下拉复选框

    在网页开发中,"jsp/html 实现下拉复选框" 是一个常见的需求,它能够为用户提供更加便捷的多选项选择方式。下拉复选框通常由HTML的`&lt;select&gt;`元素与`&lt;option&gt;`子元素配合使用,而为了实现更丰富的交互效果,我们可能...

    Qt:在TreeModel+QTreeView中使用复选框(checkbox)

    QTreeView Checkboxes 需要实现一个功能:在QT的TreeView中,能够使用复选框,并且选中父节点的复选框可以全选或取消子节点的复选框。 参考链接: http://blog.csdn.net/ajaxhe/article/details/7518285

    非常简单的下拉复选框

    总结,"非常简单的下拉复选框"JavaScript插件是实现高效、美观的多选项选择的理想工具。其简洁的设计、良好的兼容性和丰富的自定义选项,使得它成为前端开发者在构建网页表单时的一个优秀选择。通过理解和掌握这款...

    js+xml实现的复选框树 treeview checkbox

    在IT领域,特别是前端开发中,复选框树(Checkbox Treeview)是一种常见的用户界面元素,它结合了树形结构和复选框的功能,让用户能够方便地选择或取消选择树形结构中的节点。这个特定的资源,"js+xml实现的复选框树...

    jQuery实现复选框checkbox全选、反选功能.rar

    本示例中,我们关注的是如何使用jQuery来实现复选框(checkbox)的全选和反选功能,这对于构建具有交互性的表单或者需要用户进行多选操作的界面是非常实用的。 在HTML中,复选框通常由`&lt;input&gt;`标签定义,类型为...

    jquery无限极复选框下拉树

    **jQuery无限极复选框下拉树**是一种交互式的用户界面元素,常用于在Web应用中展示层次结构的数据,如组织结构、目录树或者复杂的分类系统。这种组件允许用户通过展开和折叠节点来查看和选择多级选项。下面将详细...

    jQuery高性能带复选框的树形结构插件

    **jQuery高性能带复选框的树形结构插件——highchecktree** 在Web开发中,树形结构常常用于展示层级关系的数据,例如组织结构、文件系统等。`highchecktree`是一个专门针对这种情况设计的jQuery插件,它能高效地...

    jQuery点击弹出下拉复选框代码.zip

    总的来说,"jQuery点击弹出下拉复选框代码.zip"提供的示例代码涉及了前端开发的多个关键领域,包括DOM操作、事件处理、CSS样式设计以及用户体验优化。通过学习和理解这段代码,开发者可以提升自己的前端技能,更好地...

    jsp+js带单选复选框的动态树

    【jsp+js带单选复选框的动态树】是一个基于Java Server Pages(JSP)和JavaScript技术实现的交互式树形结构,通常用于展示层级关系的数据,如组织架构、文件目录等。在这个应用场景中,用户可以进行选择操作,通过...

    SelectBox下拉复选框多选插件

    在IT领域,尤其是在前端开发中,"SelectBox下拉复选框多选插件"是一种常用的用户界面元素,用于提供用户友好的多选项选择功能。它结合了传统的下拉列表和复选框的特性,使得在有限的空间内,用户能够方便地筛选和...

    WinForm带复选框的下拉表

    在Windows Forms(WinForm)开发中,我们经常需要在用户界面中实现更加复杂的功能,比如一个下拉列表,其中每个选项都有对应的复选框。这样的控件可以为用户提供更多的选择和交互方式,使得应用程序更加直观易用。...

    jQuery多级复选框checkbox选中代码

    本教程主要探讨的是如何使用jQuery实现多级复选框(checkbox)的功能,包括水平横向、垂直纵向两种排列方式,并且提供了三种不同的样式供选择。通过这个项目,我们可以学习到如何用jQuery控制复选框的状态,以及如何...

    jQuery自定义美化复选框checkbox样式

    本项目专注于使用jQuery来美化复选框(checkbox)的样式,为用户提供更加美观和定制化的界面体验。 首先,复选框是HTML中一种基本的表单元素,通常用于让用户在多个选项中进行多选。然而,浏览器默认的复选框样式...

    delphi Listview复选框checkbox实现单选的功能

    它提供了多种视图模式,包括报告视图,其中可以包含复选框(Checkbox)来实现用户交互。本示例着重讲解如何在ListView中实现复选框的单选功能。 在Delphi中,ListView的复选框功能可以通过设置`ListView.Style`属性...

    jquery实现 复选框 选中和不选中 美化复选框

    jQuery作为一个强大的JavaScript库,提供了解决这一问题的方法,可以通过自定义CSS和事件处理来实现复选框的美化和交互功能。本文将详细介绍如何使用jQuery实现复选框的选中与不选中效果的美化。 首先,我们需要...

    jquery 复选框组件

    **jQuery 复选框组件详解** 在Web开发中,复选框(Checkbox)是一种常见的用户交互元素,用于让用户从多个选项中选择一个或多个。jQuery,作为一款强大的JavaScript库,提供了丰富的插件和方法来增强复选框的功能和...

    JSP列表中复选框批量选择功能实现

    在JavaServer Pages (JSP) 开发中,常常需要实现用户界面中的批量选择功能,比如在列表中通过复选框来选中多个项目。本文将详细介绍如何在JSP中实现这样的功能,主要涉及HTML、JavaScript 和后端Java的交互。 首先...

    jQuery美化版复选框checkbox,自定义形状和颜色

    对于jQuery自定义复选框checkbox和单选框Radiobox,我们已经有介绍过不少了,比如9款迷人样式的CSS3自定义Checkbox复选框和HTML5/CSS3开关按钮 立体3D按钮。今天要介绍的是一款基于jQuery的美化版复选框,它的特点是...

    Qt之QTableView添加复选框

    本教程将深入探讨如何在QTableView中添加复选框,特别是在表头和第一列中实现这一功能,以增强用户界面的交互性。 首先,我们要明白QTableView的工作原理。它是基于QAbstractItemView类的,通过QStandardItemModel...

    jQuery如何判断checkbox(复选框)是否被选中

    在探讨如何使用jQuery判断复选框(checkbox)是否被选中的过程中,我们首先需要理解复选框的基本属性以及jQuery操作DOM元素的方式。复选框在HTML中被定义为`&lt;input type="checkbox"&gt;`,当它被选中时,其`checked`属性...

Global site tag (gtag.js) - Google Analytics