功能描述:
一:ajax请求数据
1 实现三级联动,ajax请求数据。
- 根据选定级别,查询该级别下的项目类别;
- 根据选择类别,查询该级别+类别下所属项目列表;
前端涉及知识点:
(1)(‘#app’).change() 下拉框选择事件;
(2)ajax() ajax发送请求;
(3)(“#app”).empty(); 清空元素内容;
(4)( “#app” ).append(); 向元素压入元素;
| <tr> |
| <td width='16%' height=25 bgcolor='ffffff'><span style="color: red;">*</span>被认定的最高级别</td> |
| <td bgcolor='ffffff'> |
| <select name="ftitle" id="ftitle"> |
| <option value="">选择项目最高级别</option> |
| <option value="0">国家级</option> |
| <option value="1">省级</option> |
| <option value="2">市级</option> |
| <option value="3">县级</option> |
| </select> |
| </td> |
| </tr> |
| <tr> |
| <td width='16%' height=25 bgcolor='ffffff'><span style="color: red;">*</span>选择类别</td> |
| <td bgcolor='ffffff'> |
| <select class="category" name="category" id="category"> |
| <option value="">选择类别</option> |
| </select> |
| </td> |
| </tr> |
| <tr> |
| <td width='16%' height=25 bgcolor='ffffff'><span style="color: red;">*</span>项目</td> |
| <td bgcolor='ffffff'> |
| <select id="classalias" class="classalias"> |
| <option value="">选择项目</option> |
| </select> |
| </td> |
| </tr> |
| |
| <script type="text/javascript"> |
| $('#ftitle').change(function(){ |
| var ftitle = $('#ftitle').val(); |
| var leibieurl = "e/Info/master.php"; |
| $.ajax({ |
| url: leibieurl, |
| data: { "ftype": ftitle,"type" :1 }, |
| datatype: "json", |
| type: "post", |
| success: function (data) { |
| var datas = JSON.parse(data); |
| var categoryHtml = ""; |
| $("#category").empty(); |
| for (var i in datas) { |
| categoryHtml += "<option value='" + datas[i] + "'>" + datas[i] + "</option>"; |
| } |
| $( "#category" ).append( categoryHtml ); |
| } |
| }); |
| |
| }); |
| $('#category').change(function(){ |
| var ftitle = $('#ftitle').val(); |
| var category = $(this).val(); |
| var leibieurl = "e/DoInfo/master.php"; |
| $.ajax({ |
| url: leibieurl, |
| data: { "ftype": ftitle,"category" :category ,"type" :2 }, |
| datatype: "json", |
| type: "post", |
| success: function (data) { |
| var datas = JSON.parse(data); |
| var classaliasHtml = ""; |
| $("#classalias").empty(); |
| for (var i in datas) { |
| classaliasHtml += "<option value='" + datas[i] + "'>" + datas[i] + "</option>"; |
| } |
| $( "#classalias" ).append( classaliasHtml ); |
| } |
| }); |
| }); |
| </script> |
复制
e/Info/master.php
| <?php |
| require("../class/connect.php"); |
| require("../class/db_sql.php"); |
| require("../data/dbcache/class.php"); |
| require("../member/class/user.php"); |
| require("../class/q_functions.php"); |
| require LoadLang("pub/fun.php"); |
| $link=db_connect(); |
| $empire=new mysqlquery(); |
| |
| $user=islogin(); |
| $type=(int)$_POST['type']; |
| $ftype=(int)$_POST['ftype']; |
| if ($type == 1) { |
| |
| $ttsql=$empire->query("select id,leibie from {$dbtbpre}ecms_master where type='$ftype'"); |
| $lbArr = []; |
| while($ttr=$empire->fetch($ttsql)) |
| { |
| |
| $lbArr[] = $ttr['leibie']; |
| } |
| $lbarr = array_unique($lbArr); |
| } elseif ($type == 2) { |
| $leibie = $_POST['category']; |
| $sql = "select id,xiangmu from {$dbtbpre}ecms_master where type='$ftype' AND leibie = '$leibie'"; |
| $ttsql=$empire->query("select id,xiangmu from {$dbtbpre}ecms_master where type='$ftype' AND leibie = '$leibie'"); |
| $lbArr = []; |
| while($ttr=$empire->fetch($ttsql)) |
| { |
| $lbArr[] = $ttr['xiangmu']; |
| } |
| $lbarr = array_unique($lbArr); |
| } |
| |
| db_close(); |
| $empire=null; |
| exit(json_encode($lbarr)); |
| ?> |
复制
2 根据选择内容,增加/删除元素。
- 选择级别,需要对应填写该级别以及该级别以下的认证信息。比如:选择省级,就需要填写省级、市级、县级的认证信息。
- 认证信息框中,级别默认,不能再下拉筛选;
前端涉及知识点:
(1)find() 查询元素;
(2)使用for循环,从后往前remove删除元素;
(3)(“select[name=‘declaration_1[]’]”).each() 查询元素集,并遍历元素;
| <script> |
| function domvadd_declaration() { |
| var i; |
| var str = ''; |
| var oldi = 0; |
| var j = 0; |
| var addnum = 0; |
| addnum = parseInt( document.add.mvaddnum_declaration.value ); |
| oldi = parseInt( document.add.mveditnum_declaration.value ); |
| j = parseInt( addnum + oldi ); |
| str = str + '<tr><td style="font-weight: 700;">认定情况' + j + '</td></tr><tr><td width="16%" ><span style="color: red;">*</span>级别</td><td align="center"><select name="declaration_1[]" id="declaration_1_' + j + '"><option value="">选择级别信息</option><option value="国家级">国家级</option><option value="省级">省级</option><option value="市级">市级</option><option value="县级">县级</option><option value="其他">其他</option></select></td><td></td></tr><tr><td width="16%">编号</td><td align="center"><input type="text" name="declaration_2[]" id="declaration_2_' + j + '" value=""></td></tr><tr><td width="16%">类别</td><td align="center" width="60%"><input type="text" name="declaration_3[]" id="declaration_3_' + j + '" value=""></td><td></td></tr><tr><td width="16%" ><span style="color: red;">*</span>列入时间</td><td align="center"><input type="text" name="declaration_4[]" id="declaration_4_' + j + '" value="" readonly="readonly"></td></tr><tr><td width="16%">批次</td><td align="center"><input type="text" name="declaration_5[]" id="declaration_5_' + j + '" value=""></td></tr><tr><td width="16%"><span style="color: red;">*</span>项目名称</td><td align="center"><input type="text" name="declaration_6[]" id="declaration_6_' + j + '" value=""></td></tr><tr><td width="16%">申请地区和单位</td><td align="center"><input type="text" name="declaration_7[]" id="declaration_7_' + j + '" value=""></td></tr><tr><td width="16%">认证单位</td><td align="center"><input type="text" name="declaration_8[]" id="declaration_8_' + j + '" value=""></td></tr>'; |
| $( "#mvadd_declaration" ).append( str ); |
| var str2 = '<s' + 'cript type="text/javascript">$("#declaration_4_' + j + '").dateSelect();</s' + 'cript>'; |
| $( "#mvadd_declaration" ).append( str2 ); |
| $( "#mveditnum_declaration" ).val( j ); |
| } |
| </script> |
| <table width="100%" border="0" cellspacing="0" cellpadding="0" id="mvadd_declaration"> |
| <?php |
| $editnum = 1; |
| for ( $i = 1; $i <= $editnum; $i++ ) { |
| ?> |
| <tr> |
| <td style="font-weight: 700;">认定情况1</td> |
| </tr> |
| <tr> |
| <td width="16%"><span style="color: red;">*</span>级别</td> |
| <td align="center"> |
| <select name="declaration_1[]" id="declaration_1_1"> |
| <option value="">选择级别信息</option> |
| <option value="国家级">国家级</option> |
| <option value="省级">省级</option> |
| <option value="市级">市级</option> |
| <option value="县级">县级</option> |
| <option value="其他">其他</option> |
| </select> |
| </td> |
| <td></td> |
| </tr> |
| <tr> |
| <td width="16%">编号</td> |
| <td align="center" width="60%"><input type="text" name="declaration_2[]" id="declaration_2_1" value=""> |
| </td> |
| </tr> |
| <tr> |
| <td width="16%">类别</td> |
| <td align="center"><input type="text" name="declaration_3[]" id="declaration_3_1" value=""> |
| </td> |
| </tr> |
| <tr> |
| <td width="16%"><span style="color: red;">*</span>列入时间</td> |
| <td align="center"><input type="text" name="declaration_4[]" id="declaration_4_1" value="" readonly="readonly"> |
| </td> |
| </tr> |
| <tr> |
| <td width="16%">批次</td> |
| <td align="center"><input type="text" name="declaration_5[]" id="declaration_5_1" value=""> |
| </td> |
| </tr> |
| <tr> |
| <td width="16%"><span style="color: red;">*</span>项目名称</td> |
| <td align="center"><input type="text" name="declaration_6[]" id="declaration_6_1" value=""> |
| </td> |
| </tr> |
| <tr> |
| <td width="16%">申请地区和单位</td> |
| <td align="center"><input type="text" name="declaration_7[]" id="declaration_7_1" value=""> |
| </td> |
| </tr> |
| <tr> |
| <td width="16%">认证单位</td> |
| <td align="center"><input type="text" name="declaration_8[]" id="declaration_8_1" value=""> |
| </td> |
| </tr> |
| <?php |
| } |
| ?> |
| </tr> |
| </table> |
| <table width="100%" border="0" cellspacing="0" cellpadding="0"> |
| <tr> |
| <script type="text/javascript"> |
| $( "#declaration_4_1" ).dateSelect(); |
| </script> |
| <td height="25"> <input name="mveditnum_declaration" type="hidden" id="mveditnum_declaration" value="<?=$editnum?>"> |
| <input name="mvnum_declaration" type="hidden" id="mvnum_declaration" value="8"> |
| <input name="mvmust_declaration" type="hidden" id="mvmust_declaration" value="1"> |
| <input name="mvaddnum_declaration" type="text" id="mvaddnum_declaration" value="1" size="6" style="display: none;"> <input type="button" name="Submit5" value="添加另一个认证" onclick="javascript:domvadd_declaration();"> |
| </td> |
| </tr> |
| </table> |
复制
二 已整理好数据联动
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <meta http-equiv="X-UA-Compatible" content="ie=edge"> |
| <title>三级联动</title> |
| </head> |
| <style> |
| .option:after{ |
| content: ""; |
| width: 1px; |
| height: 25px; |
| background-color: |
| |
| position: absolute; |
| right: 20px; |
| top: 50%; |
| transform: translateY(-50%); |
| |
| pointer-events: none; |
| } |
| .option{ |
| width: 180px; |
| height: 30px; |
| border: 1px solid |
| position: relative; |
| } |
| .option select{ |
| |
| border: none; |
| |
| outline: none; |
| |
| width: 100%; |
| height: 30px; |
| line-height: 30px; |
| padding-left: 20px; |
| padding-right:20px ; |
| } |
| .flex{ |
| display: flex; |
| justify-content: start; |
| align-items: center; |
| } |
| .margin-left{ |
| margin-left: 10px; |
| } |
| </style> |
| <body> |
| <form action="" name="add"> |
| <div class="flex"> |
| <div class="option margin-left"> |
| <select name="ftitle" onchange="getCategory()" > |
| <option value="">请选择所在的省份</option> |
| <option value="国家级">国家级</option> |
| <option value="省级">省级</option> |
| <option value="市级">市级</option> |
| <option value="县级">县级</option> |
| </select> |
| </div> |
| <div class="option margin-left"> |
| <select id="category" name="category" onchange="getClassalias()"> |
| <option value="">请选择项目类别</option> |
| </select> |
| </div> |
| <div class="option margin-left"> |
| <select name="classalias" id="classalias"> |
| <option value="">请选择项目</option> |
| </select> |
| </div> |
| </div> |
| </form> |
| <script> |
| // 定义项目类别 |
| var categorySelect = [ |
| ['民间文学','传统音乐','民俗'], |
| ['曲艺','传统美术'], |
| ['戏曲','传统工艺','传统技艺'], |
| ['手工技艺','民间习俗'] |
| ]; |
| // 定义项目 |
| var classSelect = [ |
| [['梁祝传说','木兰传说'],['唢呐艺术','信仰民歌'],['重阳节','打铁花','庙会']], |
| [['大调曲子','三弦书(南阳三弦书)'],['糖画']], |
| [['豫剧','宛梆'],['道口烧鸡制作技艺'],['开封马豫兴桶子鸡','开封第一楼小笼灌汤包子','开封又一新糖醋软熘鲤鱼焙面']], |
| [['商丘方言土语'],['柳圈火神庙会']] |
| ]; |
| // 获取元素 |
| var getFtitle = document.forms['add'].ftitle; |
| var Category = document.forms['add'].category; |
| var Classalias = document.forms['add'].classalias; |
| // 根据级别获取类别 |
| function getCategory() |
| { |
| |
| Category.length = 1; |
| Classalias.length = 1; |
| var getSelectIndex = getFtitle.selectedIndex; |
| |
| var fCategory = categorySelect[getSelectIndex-1]; |
| for (var i = 0; i < fCategory.length; i++) { |
| Category[i+1] = new Option(fCategory[i],fCategory[i]); |
| } |
| } |
| |
| function getClassalias() |
| { |
| var getSelectIndex = getFtitle.selectedIndex; |
| var getCategorySIndex = Category.selectedIndex; |
| var cClassalias = classSelect[getSelectIndex - 1][getCategorySIndex - 1]; |
| for (var i = 0; i < cClassalias.length; i++) { |
| Classalias[i+1] = new Option(cClassalias[i],cClassalias[i]); |
| } |
| } |
| |
| </script> |
| |
复制
总结
| 又是不想写总结的一天,没什么才艺,给大家展示个乒乓对打吧~ |
复制