js之select三级联动

效果图如下:

代码逻辑梳理:
层层递进,比如选择了课程后,将对应的课程id保存,然后点击选择章时自动触发对应的时间,根据这个课程ID获取其下面的章信息。
其它的如节等,同理。

代码说明:
如下代码不规范,可以参考功能实现,切不可照搬照抄(当然了,可以作为一个反面代码案例以告诫后来学习者,代码严谨和规范的重要性)。
比如与像一些通用的js和css等可以放在CDN上。
比如这样的标签,如果像源代码中掺杂大量的js代码时,强烈建议将其抽出为一个外部js文件,主要方便管理和维护及其未来扩展。

源代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

<title>创建课时</title>
<link rel="stylesheet" href="../css/app.min.css"/>
<link rel="stylesheet" href="../layui/css/layui.css"  media="all">

</head>
<body>

    <div class="rel alert-reg alert-reg2">
      <div style="margin-left:90px;">
        <table class="alert-tb tdh70" width="100%" cellpadding="0" cellspacing="0" border="0">
            <tr>
                <td><em class="ico2 ico2-phone"></em></td>
                <td><label for="regPhone_">选择课程:</label></td>
                <td>
                    <span class="red">*</span>
                    <select id="course_list" name="course_list"  class="vi fctr_label_2" style="height:20px;">
                        <option value="" id="course_val">请选择课程</option>
                    </select>
                </td>
                <td></td>
            </tr>

            <tr>
                <td><em class="ico2 ico2-phone"></em></td>
                <td><label for="regPhone_">选择章:</label></td>
                <td>
                    <span class="red">*</span>
                    <select onmouseover="chapterList()" id="chapter_list" class="vi fctr_label_2" style="height:20px;">
                        <option value="" id="chapter_val">请选择章</option>
                    </select>
                </td>
                <td></td>
            </tr>

            <tr>
                <td><em class="ico2 ico2-phone"></em></td>
                <td><label for="regPhone_">选择节:</label></td>
                <td>
                    <span class="red">*</span>
                    <select onmouseover="quarterList()" id="quarter_list" class="vi fctr_label_2" style="height:20px;">
                        <option value="" id="quarter_val">请选择节</option>
                    </select>
                </td>
                <td></td>
            </tr>

            <tr>
                <td><em class="ico2 ico2-phone"></em></td>
                <td><label for="regPhone_">课时名称:</label></td>
                <td>
                    <span class="red">*</span>
                    <input class="vi fctr_label_2" type="text" id="quarter_name" placeholder="请输入课时名称" maxlength="40"/>
                </td>
                <td></td>
            </tr>

        </table>
        <br>
        <br>
        <div align="center" >
            <button type="button" id="create_quarter"  style="background-color: #7ED321;width: 150px;height: 36px;color: #FFFFFF">创建</button>
        </div>

        <br />

      </div>
    </div>

<script src="../js/jquery-1.11.3.min.js"></script>
<script src="../layui/layui.js" charset="utf-8"></script>
<script src="../js/layer/layer-v3.1.1/layer/mobile/layer.js" type="text/javascript"></script>
<script src="../js/common.js" charset="utf-8"></script>
<script type="text/javascript">

    $(function () {

        courseListInfo();

        $("#create_quarter").click(function(){

            var courseId = $("#course_list").val();

            var chapterId = $(‘#quarter_list option:selected‘) .val();

            var quarterName = $("#quarter_name").val();

            //alert("userCode = " + userCode)

            if(courseId==null || courseId==""){

                layer.open({
                      content: ‘课程不能为空,请选择课程‘ ,
                      skin: ‘msg‘,
                      time: 3 //3秒后自动关闭
                    });

                return false;
            }else if(chapterId==null || chapterId==""){

                layer.open({
                      content: ‘章节不能为空,请选择章节‘ ,
                      skin: ‘msg‘,
                      time: 3 //3秒后自动关闭
                    });

                return false;
            }else if(quarterName==null || quarterName==""){

                layer.open({
                      content: ‘课时名称不能为空‘ ,
                      skin: ‘msg‘,
                      time: 3 //3秒后自动关闭
                    });

                return false;
            } else if(quarterName.length > 40){

                layer.open({
                      content: ‘课时名称太长‘ ,
                      skin: ‘msg‘,
                      time: 3 //3秒后自动关闭
                    });

                return false;
            }else{

                 $.ajax({
                    async:false,
                    url:RouterAPI.url.api.course_add_chapter,
                    type:"POST",
                    data : {"parentId":chapterId, "title":quarterName,"type":"lesson"},
                    dataType : ‘json‘,
                    success:function(data){

                        if(data.code=="000000"){
                            layui.use(‘layer‘, function(){
                                  var layer = layui.layer;

                                  layer.alert("创建成功,返回课程管理页面",{icon:1});
                                });

                            setTimeout(() => {

                                parent.location.reload(); 

                            }, 600);

                            return true;
                        }else{
                            layui.use(‘layer‘, function(){
                                  var layer = layui.layer;

                                  layer.alert(data.msg,{icon:5});
                                });
                            return false;
                        }

                    },error:function(XMLHttpRequest, textStatus, errorThrown){
                        alert("失败");
                          // 状态码
                       alert(XMLHttpRequest.status);
                        // 状态
                        alert(XMLHttpRequest.readyState);
                        // 错误信息
                        alert(textStatus);
                        return false;
                    }

                });
            }

        });    

    });

        //课程选择发生变化
    function courseListInfo(){

        var creator = getMyCookie("userId");

        $.ajax({
            async:false,
            url:RouterAPI.url.api.course_list,
            type:"GET",
            data : {"creator":creator},
            dataType : ‘json‘,
            success:function(data){

                if(data.code=="000000"){

                    if (data.data.length > 0) {
                        for (var i = 0; i < data.data.length; i++) {
                            var item = data.data[i];
                            console.log(data.data[i].id);
                           $("#course_list").append(‘<option value="‘ + data.data[i].id + ‘">‘ + data.data[i].title + ‘</option>‘);

                        }
                    }

                    return true;
                }else{

                    layui.use(‘layer‘, function(){
                          var layer = layui.layer;

                          layer.alert(data.msg,{icon:5});
                        });
                }

            },error:function(XMLHttpRequest, textStatus, errorThrown){
                alert("失败");
                  // 状态码
               alert(XMLHttpRequest.status);
                // 状态
                alert(XMLHttpRequest.readyState);
                // 错误信息
                alert(textStatus);
                return false;
            }

        });

    }

    //章选择发生变化
    function chapterList(){

        var parentId = $(‘#course_list option:selected‘) .val();

        var type="chapter";

        $.ajax({
            url : RouterAPI.url.api.course_chapter_list,
            type : "GET",
            data : {
                parentId : parentId,
                type : type
            },
            success:function(result) {

                    $("#chapter_list option[value != ‘‘]").remove(); 

                    for (var i = 0; i < result.data.length; i++) {

                        $("#chapter_list").append("<option id=‘chapter_val‘ value=‘" + result.data[i].id + " ‘>" + result.data[i].title + "</option>");
                    }

            }
        });

    }

    //节选择变化
    function quarterList(){

        var parentId = $(‘#chapter_list option:selected‘) .val();

        var type="unit";

        $.ajax({
            url : RouterAPI.url.api.course_chapter_list,
            type : "GET",
            data : {
                parentId : parentId,
                type : type
            },
            success:function(result) {

                    $("#quarter_list option[value != ‘‘]").remove(); 

                    for (var i = 0; i < result.data.length; i++) {

                        $("#quarter_list").append("<option id=‘chapter_val‘ value=‘" + result.data[i].id + " ‘>" + result.data[i].title + "</option>");
                    }

            }
        });
    }

    function getQueryString(name) {
        var result = window.location.search.match(new RegExp("[\?\&]" + name + "=([^\&]+)", "i"));
        if (result == null || result.length < 1) {
            return "";
        }
        return result[1];
    }

</script> 

</body>
</html>

原文地址:https://www.cnblogs.com/youcong/p/11253270.html

时间: 2024-10-11 22:13:12

js之select三级联动的相关文章

angularjs select 三级联动

<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>angularjs select 三级联动</title> <script type="text/javascript" src="http://cdn.angularjs.cn/angularjs/1.3.0-beta.17/angular.js"&

JS实现全国三级联动

//引用js文件area.js <script src="/javascripts/area.js" type="text/javascript"></script> <li><label>全国 省 市 县 三级级联:</label> <i>*</i> <select id="s_province" name="s_province" c

简单jquery实现select三级联动

简单的jquery实现select三级联动 代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <title>selectList</title> 6 <style type="text/css"> 7 *{margin:0;padding:0;} 8 .selectList{width:200

jQuery实现select三级联动

参考:jQuery权威指南jQuery初步jQuery选择器jQuery操作domjQuery操作dom事件jQuery插件jQuery操作AjaxjQuery动画与特效jQuery实现导航栏jQuery实现点击式选项卡jQuery实现select三级联动 效果 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 4

JS省市县三级联动菜单

<html> <head> <title>JS省市县三级联动菜单丨潜水曝气机</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <style> body,select { font-size:9pt; font-family:Verdana; } a { color:red; text-dec

js实现省市级三级联动

之前做一个小项目时碰到了这个地域选择,三级联动的问题,找了很多源码,最后筛选出了我认为比较实用的代码,分享给大家. 首先,html文件应该有这样的select <select id="province" class="province"></select> <select id="city" class="city"></select> <select id="a

js实现省市区三级联动

电商平台或者一些网站的个人信息部分,通常会有填写地址的功能.该功能一般分为二级联动(省.市)和三级联动(省.市.区),只需要JavaScript就可以实现. 这里介绍一种很简洁易用的方法.参考地址:https://github.com/fengyuanchen/distpicker 获取上面Github目录下的dist/distpicker.js文件,然后准备一份jquery.js文件. 接下来,新建一个测试的HTML页面. 首先,引入以上的两个js文件: <script src="/pa

【原生js】原生js的省市区三级联动

html: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>全国城市三级联动</title> 6 </head> 7 <body> 8 <div class="info&q

js简单菜单三级联动

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