jQuery plugin LazyForm定制您的CheckBox Radio和Select


jQuery plugin LazyForm Version 1 (zhangpeng chen)

  定制您的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);


  注意看这里,运行Demo体验一下:  http://www.fjsjcl.com/zhangpeng/demo.html

   本文示例源代码或素材下载


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3