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>
posted @ 2019-07-26 22:31  挑战者V  阅读(1780)  评论(1编辑  收藏  举报