|
LazyForm jQuery plugin 定制您的CheckBox Radio和Select ,需要的朋友可以参考下。
在下面浏览器下测试通过:Firefox, IE7, IE8, Google浏览器。 (IE6还是算了吧),其它浏览器还没试过。 目前刚添加了4个皮肤,添加新皮肤非常方便,您可以参考已添加的皮肤图片和css代码,相信您会很快搞定。
效果截图: 一、在没有使用LazyForm的情况下,在XP下运行截图如下
二、使用LazyForm(皮肤Blue)效果如下
三、使用LazyForm(皮肤Black)效果如下
四、皮肤Default
五、皮肤Gray
demo.html代码如下: 复制代码 代码如下: <!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" /> <title>demo-lazyform</title> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="js/lazyform.js"></script> <link type="text/css" rel="stylesheet" href="css/blue/lazyform.css" id="lazyFormSkin" /> <style type="text/css"> body { font: 12px Simsun, Arial, Helvetica, sans-serif; line-height: 20px; } </style>
<script type="text/javascript"> $(function() { $('#form1').submit(function() { var skin = $('#ddlSkin option:selected').val(); $('#lazyFormSkin').attr('href', 'css/' + skin + '/lazyform.css'); skin = 'Skin: ' + skin;
var gender = 'Gender: ' + $('input[name=gender]:checked').val(); var gender2 = 'Gender2: ' + $('input[name=gender2]:checked').val();
var hobby = 'Hobby: ' + ($('#cbxBaskball').is(':checked') ? $('#cbxBaskball').val() + ' ' : '') + ($('#cbxFootball').is(':checked') ? $('#cbxFootball').val() + ' ' : '') + ($('#cbxSwimming').is(':checked') ? $('#cbxSwimming').val() + ' ' : ''); var hobby2 = "Hobby2: " + ($('#cbxBaskball2').is(':checked') ? $('#cbxBaskball2').val() + ' ' : '') + ($('#cbxFootball2').is(':checked') ? $('#cbxFootball2').val() + ' ' : '') + ($('#cbxSwimming2').is(':checked') ? $('#cbxSwimming2').val() + ' ' : '');
var country = 'Country: ' + $('#ddlCountry option:selected').text(); var country2 = 'Country2: ' + $('#ddlCountry2 option:selected').text();
$('#result').html(skin + '<br />' + gender + '<br />' + gender2 + '<br />' + hobby + '<br />' + hobby2 + '<br />' + country + '<br />' + country2);
return false; }); }); </script> </head>
<body> <form id="form1" method="post" action="javascript:alert('success!');"> <p> <label for="Skin">Skin:</label> <select id="ddlSkin"> <option value="Blue">Blue</option> <option value="Black">Black</option> <option value="Default">Default</option> <option value="Gray" >Gray</option> </select> </p>
<p> <label for="Gender">Gender:</label> <br /> <input type="radio" id="rdoMale" name="gender" value="Male" checked="checked" /> Male
<br /> <input type="radio" id="rdoFemale" name="gender" value="Female" /> Female </p>
<p> <label for="Gender">Gender2:</label> <input type="radio" id="rdoMale2" name="gender2" value="Male2" /> Male2
<input type="radio" id="rdoFemale2" name="gender2" value="Female2" checked="checked" /> Female2 </p>
<p> <label for="Hobby">Hobby:</label> <br /> <input type="checkbox" id="cbxBaskball" value="Baskball" checked="checked" /> Baskball
<br /> <input type="checkbox" id="cbxFootball" value="Football" checked="checked" /> Football
<br /> <input type="checkbox" id="cbxSwimming" value="Swimming" /> Swimming </p>
<p> <label for="Hobby">Hobby2:</label> <input type="checkbox" id="cbxBaskball12" value="Baskball2" checked="checked" /> Baskball12
<input type="checkbox" id="cbxFootball2" value="Football2" /> Football2a
<input type="checkbox" id="cbxSwimming2" value="Swimming2" checked="checked" /> Swimming2 </p>
<p> <label for="Country">Country:</label> <br /> <select id="ddlCountry"> <option value="China" selected="selected">China</option> <option value="United States" >United States</option> <option value="Canada" >Canada</option> <option value="Holland">Holland</option> </select> </p>
<p> <label for="Country">Country2:</label> <select id="ddlCountry2" style="width: 350px;"> <option value="China2">China2</option> <option value="United States2" selected="selected">United States2</option> <option value="Canada2" >Canada2</option> <option value="Holland2">Holland2</option> </select> </p>
<p> <input type="submit" value="submit" /> </p>
<p id="result"></p> </form> </body> </html>
从代码你就可以看到,LazyForm没有动您的Html和Css样式一根汗毛。 想让Select变长,设置个长度就可以了。 把LazyForm.js去掉,就是您的原样。没有任何改变。
LazyForm源码: 复制代码 代码如下: (function($) { /* ------------------------------------------------------------------------ LazyForm 1.0 Copyright (c) 2009, ZhangPeng Chen, peng1988@gmail.com ------------------------------------------------------------------------- */ $.lazyform = $.lazyform || {}; $.extend($.lazyform, { _inputs : null, _selects: null,
init: function() { _inputs = $('input[type=checkbox], input[type=radio]'); _inputs.each($.lazyform._initInput);
_selects = $('select'); _selects.each($.lazyform._initSelect);
$(document).click(function() { $('div.select div.open').removeClass().next('ul').hide(); }); },
_initInput: function() { var $self = $(this); var self = this; var radio = $self.is(':radio');
var id = radio ? (self.type + '-' + self.name + '-' + self.id) : (self.type + '-' + self.id); var className = self.type + (self.checked ? '-checked' : ''); var hover = false;
var $span = $('<span />') .attr({ 'id': id, 'class': className }) .bind('mouseover mouseout', function() { hover = !hover; $span.attr('class', self.type + (self.checked ? '-checked' : '') + (hover ? '-hover' : '')); }) .bind('click', function() { if(radio) { $('input[name=' + self.name + ']').each(function() { $('#' + self.type + '-' + self.name + '-' + this.id).attr('class', self.type); }) }
self.click(); $span.attr('class', self.type + (self.checked ? '-checked' : '')); });
$self.addClass('hidden').before($span); },
_$openSelect: null, _initSelect: function() { var $self = $(this); var self = this;
var selectWidth = $self.width(); var selectUlWidth = $self.width() - 2;
var $select = $('<div />').attr('id', 'select-' + self.id).width(selectWidth).addClass('select'); var $selectItem = $('<div />').append('<span />'); var $selectItemText = $selectItem.children('span'); var $selectUl = $('<ul />').width(selectUlWidth).hide(); var $selectLi = null; var $hoverLi = null;
$self.children().each(function() { var $tempLi = $('<li />').append(this.text); if(this.selected) { $tempLi.addClass('hover'); $selectItemText.text(this.text);
$selectLi = $tempLi; $hoverLi = $tempLi; } $selectUl.append($tempLi);
$tempLi .bind('mouseover', function() { $hoverLi.removeClass(); $tempLi.addClass('hover'); $hoverLi = $tempLi; }) .bind('click', function() { $self.children().each(function() { if($hoverLi && this.text == $hoverLi.text()) { $tempLi.addClass('hover'); this.selected = true;
$selectLi = $tempLi; $hoverLi = $tempLi; } });
$selectItem.removeClass(); $selectItemText.text($selectLi.text()); $selectUl.hide(); }); });
$selectItem.click(function(e) { if($.lazyform._$openSelect && $.lazyform._$openSelect != $select) { $('#' + $.lazyform._$openSelect.attr('id') + ' > div.open').removeClass().next('ul').hide(); } $.lazyform._$openSelect = $select;
$selectItem.toggleClass('open'); if($selectItem.attr('class') == 'open') { if($hoverLi != $selectLi) { $hoverLi.removeClass(); $selectLi.attr('class', 'hover'); $hoverLi = $selectLi; } $selectUl.show(); } else { $selectUl.hide(); }
e.stopPropagation(); });
$select.append($selectItem); $select.append($selectUl);
$self.hide().before($select); } });
$(document).ready(function() { $.lazyform.init(); }); })(jQuery);
代码打包下载 |
|