jQuery联动下拉框表单美化js代码

版权:原创 更新时间:1年以上
[该文章底部包含文件资源,可根据自己情况,决定是否下载资源使用,时间>金钱,如有需要,立即查看资源]

以下是 jQuery联动下拉框表单美化js代码 的示例演示效果:

当前平台(PC电脑)
  • 平台:

部分效果截图:

jQuery联动下拉框表单美化js代码

HTML代码(index.html):

<!DOCTYPE html>
<html>
  <head>
    <meta charset='utf-8'>
    <meta http-equiv="X-UA-Compatible" content="chrome=1">
    <link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen" />
    <link rel="stylesheet" type="text/css" href="stylesheets/pygment_trac.css" media="screen" />
    <link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print" />
    <!--[if lt IE 9]>
    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <title>jQuery联动下拉框表单美化</title>
    <link rel="stylesheet" href="src/css/selector.css">
    <script src="src/js/jquery.js"></script>
    <script src="src/js/Selector.js"></script>
  </head>

  <body>
    <div id="container">
      <div class="inner">


<section id="main_content">

<h3>Demo</h3>
<div class="m-form">

    <div class="item">
      <label>婚姻状况:</label>
      <dl class="m-select" id="Marriage">
        <dt>未婚</dt>
        <dd>
          <input type="hidden" name="">
        </dd>
      </dl>
    </div>  

    <div class="item">
      <label>年龄:</label>
      <dl class="m-select m-select-w" id="Age0">
        <dt></dt>
        <dd class="age">
          <input type="hidden" name="" value="24">
        </dd>
      </dl>
      <span class="t">至</span>
      <dl class="m-select m-select-w" id="Age1">
        <dt></dt>
        <dd class="age">
          <input type="hidden" name="" value="28">
        </dd>
      </dl>
    </div>

    <div class="item">
      <label>身高:</label>
      <dl class="m-select m-select-w" id="Height0">
        <dt></dt>
        <dd class="height">
          <input type="hidden" name="">
        </dd>
      </dl>
      <span class="t">至</span>
      <dl class="m-select m-select-w" id="Height1">
        <dt></dt>
        <dd class="height">
          <input type="hidden" name="">
        </dd>
      </dl>
    </div>

    <div class="item">
      <label>居住地:</label>
      <dl class="m-select" id="AreaSelector">
        <dt></dt>
        <dd class="region" style="height:210px;">
          <input type="hidden" name="" value="">
          <ul class="tab">
          </ul>
          <div class="tab-con clearfix">
          </div>
        </dd>
      </dl>
    </div>

    <div class="item">
      <label>出生地:</label>
      <dl class="m-select" id="AreaSelector2">
        <dt></dt>
        <dd class="region" style="height:210px;">
          <input type="hidden" name="" value="">
          <ul class="tab">
          </ul>
          <div class="tab-con clearfix">
          </div>
        </dd>
      </dl>
    </div>

    <div class="item">
      <label>月收入:</label>
      <dl class="m-select m-select-w" id="Salary0">
        <dt></dt>
        <dd>
          <input type="hidden" name="">
        </dd>
      </dl>
      <span class="t">至</span>
      <dl class="m-select m-select-w" id="Salary1">
        <dt></dt>
        <dd>
          <input type="hidden" name="">
        </dd>
      </dl>
    </div>    

</div>
<br>
<h3>Code</h3>
<pre>
<code>
     //普通模式
      new SelectorJS.selector.init({
        id:'#Marriage',
        data: [["1", "未婚"], ["3", "离异"], ["4", "丧偶"] ],
        value:'未婚'
      });  

      //年龄联动
      new SelectorJS.age('#Age0','#Age1',25,27);

      //身高联动
      new SelectorJS.heightMulti('#Height0','#Height1',168,178);

      //地区联动 二级
      new SelectorJS.area.init('#AreaSelector','101020600', false);

      //地区联动 三级
      new SelectorJS.area.init('#AreaSelector2','101151202', true);

      //自定义联动
      var salaryCode = [["1", "1000"], ["2", "2000"], ["3", "3000"], ["4", "5000"], ["5", "8000"], ["6", "10000"], ["7", "20000"], ["8", "50000"], ["9", "50000以上"] ];
      var salaryDefault1 = '1';
      var salaryDefault2 = '4';
      new SelectorJS.selector.init({
        id:'#Salary0',
        data: salaryCode,
        value:salaryDefault1,
        click: function(val, index){
          new SelectorJS.selector.init({
            id:'#Salary1',
            data: salaryCode.slice(index),
            value:  Math.max(salaryCode[index][0], parseInt(salaryDefault2) )
          }).select.click();
        }
      }); 
      new SelectorJS.selector.init({
            id:'#Salary1',
            data: salaryCode.slice(parseInt(salaryDefault1)),
            value:  salaryDefault2
      });  
</code>  
</pre>

<h3>说明</h3>
<p>Selector.js与address.json两个文件必须放在同一个目录下。当调用地区的方法的时候才加载adrress文件</p>
</section>
 

<script>
      //普通模式
      new SelectorJS.selector.init({
        id:'#Marriage',
        data: [["1", "未婚"], ["3", "离异"], ["4", "丧偶"] ],
        value:'1'
      });  

      //年龄联动
      new SelectorJS.age('#Age0','#Age1',25,27);

      //身高联动
      new SelectorJS.heightMulti('#Height0','#Height1',168,178);

      //地区联动 二级
      new SelectorJS.area.init('#AreaSelector','101020600', false);

      //地区联动 三级
      new SelectorJS.area.init('#AreaSelector2','101151202', true);

      //自定义联动
      var salaryCode = [["1", "1000"], ["2", "2000"], ["3", "3000"], ["4", "5000"], ["5", "8000"], ["6", "10000"], ["7", "20000"], ["8", "50000"], ["9", "50000以上"] ];
      var salaryDefault1 = '1';
      var salaryDefault2 = '4';
      new SelectorJS.selector.init({
        id:'#Salary0',
        data: salaryCode,
        value:salaryDefault1,
        click: function(val, index){
          new SelectorJS.selector.init({
            id:'#Salary1',
            data: salaryCode.slice(index),
            value:  Math.max(salaryCode[index][0], parseInt(salaryDefault2) )
          }).select.click();
        }
      }); 
      new SelectorJS.selector.init({
            id:'#Salary1',
            data: salaryCode.slice(parseInt(salaryDefault1)),
            value:  salaryDefault2
      });
</script>
</div>
</div>
</body>
</html>







JS代码(Selector.js):

/** * jQuery鎷栨嫿 & 寮瑰嚭灞? * API:http://dreamback.github.io/selectorjs/ * @author:heshimeng1987@qq.com */
(function(){
	function removeMenus(){
	$('.m-select').removeClass('m-focus').find('dd').hide();
}
;
	var SelectorJS ={
	//鍦板尯閫夋嫨鍣?area:{
	init:function(target,value,full){
	SelectorJS.script('address.js',function(code){
	this.code = code;
	this.target = $(target);
	this.dt = this.target.find('dt');
	this.dd = this.target.find('dd');
	this.tab = this.target.find('.tab');
	this.con = this.target.find('.tab-con');
	this.input = this.target.find('input');
	this.value = 'c' + value;
	this.full = full === undefined ? true:full;
	//true 涓夐」var _value = [];
	if (/0{
	5}
$/.test(this.value)){
	//澶栧浗_value = ['澶栧浗',this.code['c10200000'][this.value].n];
}
else if (/0{
	2}
$/.test(this.value) || !full){
	_value = [this.code[this.value.replace(/\d{
	4}
$/,'0000')].n,this.code[this.value.replace(/\d{
	4}
$/,'0000')][this.value.replace(/\d{
	2}
$/,'00')].n];
}
else{
	_value = this.code[this.value.replace(/\d{
	4}
$/,'0000')].d ?[this.code[this.value.replace(/\d{
	4}
$/,'0000')].n,this.code[this.value.replace(/\d{
	4}
$/,'0000')][this.value].n]:[this.code[this.value.replace(/\d{
	4}
$/,'0000')].n,this.code[this.value.replace(/\d{
	4}
$/,'0000')][this.value.replace(/\d{
	2}
$/,'00')].n,this.code[this.value.replace(/\d{
	4}
$/,'0000')][this.value.replace(/\d{
	2}
$/,'00')][this.value].n];
}
this.tab.html('<li>' + _value.join('</li><li>') + '</li>');
	this.dt.html(_value.join('-'));
	var res = [/0{
	5}
$/.test(this.value) ? 'c10200000':this.value.replace(/\d{
	4}
$/,'0000'),this.value.replace(/\d{
	2}
$/,'00'),this.value];
	var li = this.tab.find('li');
	li.last().addClass('on');
	li.each(function(i){
	$(this).attr('val',res[i]);
}
);
	this.create(li.size() > 2 ? this.code[res[0]][res[1]]:this.code[res[0]]);
	this.events();
}
,this);
	this.create = function(data){
	var html = '';
	$.each(data,function(key,val){
	if (key != 'n' && key != 'd') html += '<a title="' + this.n + '" href="javascript:;
	" val="' + key + '">' + this.n + '</a>';
}
);
	this.con.html(html);
}
;
	this.events = function(){
	var that = this;
	this.con.delegate('a','click',function(e){
	e.stopPropagation();
	var on = that.tab.find('.on');
	on.nextAll().remove();
	var key = $(this).attr('val');
	var obj;
	var text = $(this).text();
	if (/000000$/.test(key)){
	on.html(text).attr('val',key);
	that.setVal(key);
	return;
}
if (/0000$/.test(key)){
	obj = that.code[key];
	that.create(obj);
	on.removeClass('on').html(text).attr('val',key);
	that.tab.append('<li class="on">璇烽€夋嫨</li>');
}
else if (/\d00$/.test(key)){
	if (that.code[key.replace(/\d\d00$/,'0000')].d != 1){
	obj = that.code[key.replace(/\d\d00$/,'0000')][key];
	that.create(obj);
	on.removeClass('on').html(text).attr('val',key);
	if (that.full){
	that.tab.append('<li class="on">璇烽€夋嫨</li>');
}
else{
	that.setVal(key);
}
}
else{
	on.html($(this).html()).attr('val',key);
	that.setVal(key);
}
}
else{
	on.html($(this).html()).attr('val',key);
	that.setVal(key);
}
}
);
	this.tab.delegate('li','click',function(e){
	e.stopPropagation();
	if ($(this).hasClass('on')) return;
	var key = $(this).attr('val');
	if (/0000$/.test(key)){
	that.create(that.code);
}
else if (that.code[key.replace(/\d\d00$/,'0000')].d != 1){
	that.create(that.code[key.replace(/\d\d00$/,'0000')]);
}
$(this).addClass('on').siblings().removeClass('on');
	$(this).nextAll().remove();
}
);
	$(document).unbind('click',removeMenus).bind('click',removeMenus);
	this.target.bind('click',function(e){
	removeMenus();
	e.stopPropagation();
	that.dd.show();
	that.target.addClass('m-focus');
}
);
}
;
	this.setVal = function(key){
	this.input.val(key.replace('c',''));
	var text = [];
	this.tab.find('li').each(function(){
	text.push($(this).text());
}
);
	this.dt.html(text.join('-'));
	this.dd.hide();
	this.target.removeClass('m-focus');
}
}
}
,age:function(age0,age1,val0,val1){
	function getAgeHTML(start){
	start = start || 18;
	start = start > 80 ? 80:start;
	var result = '',i = start;
	for (;
	i <= 80;
	i++){
	result += '<a' + (i == start && start < 68 ? ' style="margin-left:' + ((i % 10 ? i % 10:1) - 1) * 40 + 'px"':'') + ' href="javascript:;
	" val="' + i + '">' + i + '</a>';
}
return result;
}
new SelectorJS.selector.init({
	id:age0,data:getAgeHTML(),value:val0,click:function(value){
	var prev = $('dt',age1).html() | 0;
	var form = new SelectorJS.selector.init({
	id:age1,value:value >= prev ? value:prev,data:getAgeHTML(value + 1)}
);
	if (value >= prev){
	form.curValue.html(value + 1 < 81 ? value + 1:80)}
form.curValue.click();
}
}
).curValue.html(val0);
	new SelectorJS.selector.init({
	id:age1,value:val1,data:getAgeHTML(val0 + 1)}
).curValue.html(val1);
}
,heightMulti:function(h0,h1,val0,val1){
	function getAgeHTML(start){
	start = start || 129;
	start = start > 211 ? 211:start;
	var result = '',i = start;
	for (;
	i <= 211;
	i++){
	result += '<a' + (i == start && start < 190 ? ' style="margin-left:' + ((i % 10 ? i % 10:1) - 1) * 40 + 'px"':'') + ' href="javascript:;
	" val="' + i + '">' + i + '</a>';
}
return result;
}
new SelectorJS.selector.init({
	id:h0,data:getAgeHTML(),value:val0,click:function(value){
	var prev = $('dt',h1).html() | 0;
	var form = new SelectorJS.selector.init({
	id:h1,value:value >= prev ? value:prev,data:getAgeHTML(value + 1)}
);
	if (value >= prev){
	form.curValue.html(value + 1 < 211 ? value + 1:211)}
form.curValue.click();
}
}
).curValue.html(val0);
	new SelectorJS.selector.init({
	id:h1,value:val1,data:getAgeHTML(val0 + 1)}
).curValue.html(val1);
}
,selector:{
	init:function(options){
	this.select = $(options.id);
	this.data = options.data;
	this.value = options.value;
	this.height = options.height;
	this.width = options.width;
	this.curValue = this.select.find('dt');
	this.list = this.select.find('dd');
	this.input = this.select.find('input');
	this.click = options.click;
	this.height && this.list.css({
	height:this.height,overflowY:'auto'}
);
	this.width && this.select.css({
	width:this.width}
);
	this.create = function(){
	var listHTML = '',that = this;
	if (typeof this.data !== 'string'){
	$.each(this.data,function(index,val){
	if (val[0] == that.value){
	that.input.val(val[0]);
	that.curValue.html(val[1]);
}
listHTML += '<a val="' + val[0] + '" href="javascript:;
	">' + val[1] + '</a>';
}
);
}
else{
	listHTML = this.data;
}
this.list.children().not('input').remove();
	this.list.append(listHTML);
	if (this.data !== 'string'){
	//that.input.val(this.value);
	//that.curValue.html(this.value);
}
}
,this.events = function(){
	var that = this;
	this.list.find('a').bind('click',function(e){
	e.stopPropagation();
	that.input.val($(this).attr('val'));
	that.curValue.html($(this).text());
	that.list.hide();
	that.select.removeClass('m-focus');
	that.click && that.click.call(this,$(this).attr('val') | 0,$(this).index());
}
);
	$(document).unbind('click',removeMenus).bind('click',removeMenus);
	this.select.bind('click',function(e){
	e.stopPropagation();
	removeMenus();
	that.list.show();
	that.select.addClass('m-focus');
}
);
}
this.create();
	this.events();
}
}
,script:function(src,callback,that){
	var script = document.getElementsByTagName('script'),i = 0,len = script.length;
	for (;
	i < len;
	i++){
	if (/Selector.js/.test(script[i].src)){
	$.getScript(script[i].src.replace('Selector.js',src),function(){
	callback.call(that,addressCode);
}
);
	break;
}
}
}
}
;
	window.SelectorJS = SelectorJS;
}
)();
	

CSS代码(selector.css):

.m-form{background:#fff;padding:50px;font-family:12px/1.5 arial,\5b8b\4f53,sans-serif;}
.m-form ul,.m-form li,.m-form dl,.m-form dt,.m-form dd{padding:0;margin:0;list-style:none;}
.m-form label{color:#6E6E6E;display:inline-block;height:36px;float:left;line-height:36px;width:120px;text-align:right;padding-right:20px;}
.m-form .item{height:46px;margin-bottom:10px;}
.m-form .t{display:block;height:36px;line-height:36px;padding:0 10px;float:left;}
.m-select{height:36px;float:left;width:234px;background-image:url(../images/selector.png);background-repeat:no-repeat;background-position:100% 0;border-radius:5px;}
.m-select-w{width:100px;}
.m-focus{background-position:100% 100%;position:relative;}
.m-select dt{line-height:32px;border:2px solid #E3E3E3;text-align:center;text-indent:-31px;cursor:pointer;height:32px;border-radius:5px;}
.m-select dd{width:100%;overflow-y:auto;background:#fff;position:absolute;left:0;top:34px;display:none;border-top:2px solid #E3E3E3;border-bottom:2px solid #E3E3E3;border-radius:5px;box-shadow:0 6px 12px rgba(0,0,0,0.175)}
.m-select dd a{display:block;font-size:14px;text-indent:1em;line-height:32px;border-right:2px solid #E3E3E3;border-left:2px solid #E3E3E3;height:32px;}
.m-select dd a:hover{text-decoration:none;background:#eee;}
.m-select dd.age,.m-select dd.height{width:400px;border:2px solid #E3E3E3;}
.m-select dd.age a,.m-select dd.height a{float:left;width:40px;text-align:center;border:none;display:inline-block;text-indent:0;height:24px;line-height:24px;}
.m-select dd.region{width:460px;height:200px;border:2px solid #E3E3E3;}
.region .tab{height:28px;padding:10px 0 0 10px;}
.region .tab li{float:left;height:24px;line-height:24px;padding:0 20px;border:1px solid #E3E3E3;margin-right:5px;cursor:pointer;}
.region .tab li.on{border:2px solid #7DB3D4;cursor:default;position:relative;background:#7DB3D4;color:#fff;}
.region .tab-con{border-top:2px solid #7DB3D4;margin:0 10px 10px 10px;position:relative;top:-2px;background:#fff;}
.m-select dd.region a{float:left;text-align:center;border:none;width:62px;overflow:hidden;overflow:hidden;display:inline-block;text-indent:0;}
.m-form .form-item{position:static;margin-bottom:200px;}
附件:下载该文件资源,减少时间成本(增值服务)
留言
该资源可下载
File Source
.rar
100.82 KB
Html 表单代码1
最新结算
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jquery虚拟键盘中文打字效果js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
HTML5实现CSS滤镜图片切换特效代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery头像裁剪插件cropbox js代码
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
CSS3制作3D图片立方体旋转特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
jQuery+css3实现信封效果
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
我们力求给您提供有用的文章,再此基础上,会附加营收资源,不做任何广告,让平台可以更好发展 若您发现您的权利被侵害,或使用了您的版权,请发邮件联系 sunlifel@foxmail.com ggbig觉得 : 不提供源码的文章不是好文章
合作伙伴
联系我们
  • QQ:21499807
  • 邮箱:sunlifel@foxmail.com
  • QQ扫一扫加QQ
    QQ扫一扫
Copyright 2023-2024 ggbig.com·皖ICP备2023004211号-1
打赏文章