LazyForm jQuery plugin 定制您的CheckBox 

2016-02-19 15:06 7 1 收藏

下面图老师小编要向大家介绍下LazyForm jQuery plugin 定制您的CheckBox ,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - Web开发 】

打包下载

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

在下面浏览器下测试通过:Firefox, IE7, IE8, Google浏览器。 (IE6还是算了吧),其它浏览器还没试过。
目前刚添加了4个皮肤,添加新皮肤非常方便,您可以参考已添加的皮肤图片和css代码,相信您会很快搞定。

效果截图:
一、在没有使用LazyForm的情况下,在XP下运行截图如下

二、使用LazyForm(皮肤Blue)效果如下

三、使用LazyForm(皮肤Black)效果如下

四、皮肤Default

五、皮肤Gray

demo.html代码如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)代码如下:
!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" /
titledemo-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);

来源:http://www.tulaoshi.com/n/20160219/1608870.html

延伸阅读
标签: Web开发
当然,代码使用起来也非常的方便,很多东西就不用自己再去琢磨了。 研究的过程中顺便用jQuery实现了一个div的拖动,代码附于本文结尾。 实现的思路请参考我的可以拖动的DIV(二)一文。 在参考jQuery中文网站中的例子时,我发现他们在div窗口标题栏触发click事件时,将div的位置移上了一些,而mouseup的事件注册在整个div窗口上,这个思路让...
标签: Web开发
打包下载: 文件打包下载
标签: Web开发
效果如图所示: 核心代码: 代码如下: script type="text/javascript" $('#one').css("background","#fff"); $('div').css("background","#fff"); $('body div').css("background","#bbffaa");//改变body内所有div的属性 $('div span').css("background","#bbffaa").css("color","red").css("font-size","12px");//改变所有div下的sp...
标签: Web开发
运行后查看效果,需要刷新下。 !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 titlejquery事件2/title script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js" type="text/javascript"/scrip...
标签: Web开发
文件打包下载 主要修改了两个地方: 一、上下选择与输入值同步问题。 输入关键字后,当出现了下拉选项,用键盘的上下键选择时,关键字输入框的值,没有与你选择的值同步。插件是老外写的,可能他没有考虑到这一点。 二、修正了在firefox下中文输入,没有激活自动提交的问题。 老外当然不会用到中文输入,这个bug存在也理所当然...

经验教程

55

收藏

66
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部