js点击弹出层之后选择中国大学的弹框

效果如下图

代码

1. 数据

一共包含了全国3049所大学。

数据文件:http://file.111cn.net/upload/2014/4/school.js

这是一个脚本文件, 里含的JSON对象存储了学校的信息, 格式为:

 代码如下 复制代码

var schoolList=[
    {
        "id":1, //省份id
        "school": [
            {
                "id": 1001, //学校id
                "name": "u6e05u534eu5927u5b66" //学校名称
            }
            /....
            ], //这个省的学校
        "name": "u5317u4eac"
    },
    //...
];

2. 步骤

2.1 弹框的构造及弹出方式 目前弹框分为iframe和div两种形式, 在本例中我选择使用div作为弹框, 弹框的结构如下:

 代码如下 复制代码
<div id="choose-box-wrapper">
  <div id="choose-box">
    <div id="choose-box-title">
        <span>选择学校</span>
    </div>
    <div id="choose-a-province">
    </div>
    <div id="choose-a-school">
    </div>
    <div id="choose-box-bottom">
        <input type="botton" onclick="hide()" value="关闭" />
    </div>
  </div>
</div>

    弹框初始状态下为隐藏状态(display:none), 为了用户体验, 在用户触发打开弹框时间后, 弹框应该在页面中呈居中显示, 使用下面一段代码可以实现居中效果:

 代码如下 复制代码

function makeCenter()
{
    $('#choose-box-wrapper').css("display","block");
    $('#choose-box-wrapper').css("position","absolute");
    $('#choose-box-wrapper').css("top", Math.max(0, (($(window).height() - $('#choose-box-wrapper').outerHeight()) / 2) + $(window).scrollTop()) + "px");
    $('#choose-box-wrapper').css("left", Math.max(0, (($(window).width() - $('#choose-box-wrapper').outerWidth()) / 2) + $(window).scrollLeft()) + "px");
}

2.2 加载省份列表和学校列表 在第一次跳出弹框时, 默认为列表中的第一个省份. 加载完这个省份所有的名单后, 给每一项都需要绑定一个click函数, 用户在发生单击后, 更新用户选择省份下的大学列表.

   更新完该省的大学列表后, 同样要给每一项都绑定一个click函数, 用户在选择该大学后可以执行相应的操作. (比如给某个文本框填值, 页面重定向etc.)

 代码如下 复制代码

function initProvince()
{
    //原先的省份列表清空
    $('#choose-a-province').html('');
    for(i=0;i<schoolList.length;i++)
    {
        $('#choose-a-province').append('<a class="province-item" province-id="'+schoolList[i].id+'">'+schoolList[i].name+'</a>');
    }
    //添加省份列表项的click事件
    $('.province-item').bind('click', function(){
            var item=$(this);
            var province = item.attr('province-id');
            var choosenItem = item.parent().find('.choosen');
            if(choosenItem)
                $(choosenItem).removeClass('choosen');
            item.addClass('choosen');
            //更新大学列表
            initSchool(province);
        }
    );
}

function initSchool(provinceID)
{
    //原先的学校列表清空
    $('#choose-a-school').html('');
    var schools = schoolList[provinceID-1].school;
    for(i=0;i<schools.length;i++)
    {
        $('#choose-a-school').append('<a class="school-item" school-id="'+schools[i].id+'">'+schools[i].name+'</a>');
    }
    //添加大学列表项的click事件
    $('.school-item').bind('click', function(){
            var item=$(this);
            var school = item.attr('school-id');
            //更新选择大学文本框中的值
            $('#school-name').val(item.text());
            //关闭弹窗
            hide();
        }
    );
}

2.3 弹出及隐藏窗口 在本例中, 用户点击一个要求输入学校的文本框, 页面跳出弹框. 弹框中含有关闭按钮, 可以关闭弹框.

 代码如下 复制代码

//弹出窗口
function pop(){
    //将窗口居中
    makeCenter();

    //初始化省份列表
    initProvince();

    //默认情况下, 给第一个省份添加choosen样式
    $('[province-id="1"]').addClass('choosen');

    //初始化大学列表
    initSchool(1);
}
//隐藏窗口
function hide()
{
    $('#choose-box-wrapper').css("display","none");
}

完整源码下载http://file.111cn.net/upload/2014/4/SchoolTest.zip

时间: 2024-10-08 00:06:39

js点击弹出层之后选择中国大学的弹框的相关文章

基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)_jquery

1. 数据 一共包含了全国3049所大学, 从人人网拷贝的 (仅供学习交流, 请勿用于商业项目), 这是一个脚本文件, 里含的JSON对象存储了学校的信息, 格式为: 复制代码 代码如下: var schoolList=[ { "id":1, //省份id "school": [ { "id": 1001, //学校id "name": "\u6e05\u534e\u5927\u5b66" //学校名称 }

layer.js 弹出层提交form表单,action重定向

layer.js,一个jquery的插件,可以用它来做信息提示,弹出层等.  官方demo地址:http://layer.layui.com/ 官方api地址:http://layer.layui.com/api.html 使用layer.js做弹出层时,在弹出层里直接提交form表单,返回的画面仍然停留在弹出层里. 我们想在弹出层里提交form表单后关闭弹出层,并跳转到另一个画面. 0.引入layer.js <% String path = request.getContextPath();

jquery 点击弹出层

<!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-

jQuery实现点击任意位置弹出层外关闭弹出层效果_jquery

在之前做项目的时候经常会在主页面上点击某个按钮,右侧弹出一个div输出对应内容的详细信息.此时,我是希望在鼠标点击弹出层外的时候关闭该弹出层,主要思想就是: 找到鼠标点击的那个元素 判断这个元素是否在指定区域内,其实就是判断它的父元素是不是弹出层 如果不是就对弹出层进行hide,如果是就不进行任何操作 具体实现 该代码需要使用jQuery,代码如下: $(document).mousedown(function(e){ if($(e.target).parent("#info").le

jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)_jquery

弹出层主要用于展示丰富的页面信息,还有一个更好的应用是弹出表单层丰富交互应用.常见的应用有弹出登录表单层,用户提交登录信息,后台验证登录成功后,弹出层消失,主页面局部刷新用户信息.本文我们将给大家介绍如何使用jQuery+Ajax+PHP弹出层异步登录的应用. 效果展示        源码下载 HTML 由于本例UI部分使用了Bootstrap,以及使用jQuery插件,因此需要事先载入相关文件,推荐大家使用相关的CDN资源. <link rel="stylesheet" hre

jQuery+Ajax+PHP弹出层异步登录的例子

弹出层主要用于展示丰富的页面信息,还有一个更好的应用是弹出表单层丰富交互应用.常见的应用有弹出登录表单层,用户提交登录信息,后台验证登录成功后,弹出层消失,主页面局部刷新用户信息.本文我们将给大家介绍如何使用jQuery+Ajax+PHP弹出层异步登录的应用. 关于弹出层效果,我们继续使用本站helloweba上篇文章中写的弹出层插件-hwLayer.更多的灵活性体现在绑定弹出层上的表单提交按钮事件,然后进行ajax异步交互,最后局部刷新主页面,大家可以先看demo演示.阅读本文,您除了需要具备

jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)_jquery

本文实例讲述了jquery实现仿新浪微博带动画效果弹出层代码.分享给大家供大家参考.具体如下: 这是一款jquery实现带动画的弹出层,最开始是模拟新浪微博中的弹出层,后来引入了jQuery,又想了想,加入点动画效果不知怎么样,后来就写出了这么一个弹出的网页层效果,你点击按钮后就可以看到一个渐出的可关闭的弹出层,点击关闭后,当然也是渐渐的消失的,移动时根据鼠标位置计算控件左上角的绝对位置,松开鼠标后停止移动并恢复成不透明. 运行效果截图如下: 在线演示地址如下: http://demo.jb51

jquery dialog 弹出层内容错误

问题描述 jquery dialog 弹出层内容错误 弹出框时不时的弹出父页面的内容,经过测试与页面表格样式无关,忘有大神帮忙解决一下. 解决方案 jQuery弹出层插件DialogJquery UI dialog弹出层插件jquery dialog-优雅的弹出框 解决方案二: <!DOCTYPE html><html xmlns=""http://www.w3.org/1999/xhtml""><head> <meta h

web 前端常用组件之Layer弹出层组件_javascript技巧

经手几个项目,还是感觉 Layer 用起来比较的轻松,你能想到的 Layer 都能帮你做到. 感谢 Layer 作者贤心,Layer 官网地址:http://layer.layui.com/ 1. Layer 使用特点 Layer 具备全方位的解决方案,致力于服务各水平段的开发人员,让页面轻松地拥有丰富友好的操作体验. Layer 尽可能地在以更少的代码展现更强健的功能,注重性能的提升.易用和实用性.. Layer 兼容了包括IE6在内的所有主流浏览器. 数量可观的接口,可以自定义需要的风格,每