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);

代码打包下载