具体功能:

实现品名、材质、规格、产地的四级联动,并且在品名、材质、规格、产地输入字时会显示下拉框,实现模糊检索,当输入'品名'时,隐藏的品名code会自动带出,当把品名删掉一个或者几个字使其不完全时,品名code会自动消失,并且'品名'也会自动消失。其后的'材质' '规格' '产地'是根据 '品名' 取得的值,这样的好处是后面的材质 规格 产地可以根据下拉框进行选择也可以手动输入,而不是品名决定材质 材质决定规格 规格决定产地这种的四级联动。具体业务参照【合同管理】中【合同】中【品种明细】中“新增”按钮的实现过程。

相关功能实现的具体代码如下:【注意代码格式!!!】

<script type="text/javascript">
//保存数据到数据库中
var i = 0;
var obj = null;
//点击‘新增’按钮时 新增加一条空白记录,然后自己输入数据
$(document).ready(function(){
    $("#addTable").click(function(){  
       var tr="<tr><td><input type=\"checkbox\" name=\"check\"/></td>"+      //复选框
      //品名
       "<td><input type='text' name='item_name' id='item_name"+i+"'  value='<%=item_name%>'>"+
              "<input type='text' name='item_code' id='item_code"+i+"' value=' '></td>"+  
              "<td><input type='text' name='material_name' id='material_name"+i+"' >"+ //材质
              "<td><input type='text' name='spec' id='spec"+i+"'></td>"+   //规格
              "<td><input type='text' name='producer' id='producer"+i+"'></td>"+ //产地
              "<td><input type='text' name='item_weight' id='item_weight'></td>"+   //件重
              "<td><input type='text' name='quantity' id='quantity'></td>"+      //数量
              "<td><input type='text' name='weight' id='weight'></td>"+ //重量
      "<td><select  id='item_measure' name='item_measure'> "+     //计量方式
    //获取下拉框中的 ‘计量方式’ 内容
    <% if(list!=null){
    for(int i=0;i<list.size();i++){
    map = (Map)list.get(i);
    String base_type = myFunc.getValue(map.get("base_type")).toString();
    if(base_type.equals("8")){
    map1 = map;
    String base_name = myFunc.getValue(map1.get("base_name")).toString();
    %>
"<option value='<%=base_name %>'><%=base_name %></option> "+
    <% }
    }
    } %>
          "</select></td>"+   //计量方式
              "<td><input type='text' name='price' id='price'></td>"+  //含税单价
              "<td><input type='text' name='amount' id='amount'></td>"+  //含税金额 = 重量*含税单价
              "<td>17%</td>"+  //税率
              "<td><select  id='warehouse_name' name='warehouse_name'> "+

//获取下拉框中的‘仓库名称’

[单独在仓库表中,为了便于后期维护  当添加或者删除仓库的时候 只添加数据库即可 不需要改动代码]

<% if(list2!=null){
              for(int i=0;i<list2.size();i++){
                      map2 = (Map)list2.get(i);
                                        String warehouse_code = myFunc.getValue(map2.get("warehouse_code")).toString();
                                        String warehouse_name = myFunc.getValue(map2.get("warehouse_name")).toString();
              %>
              "<option value='<%=warehouse_name%>'><%=warehouse_name%></option> "+
              <% }
              }
              %>
              "</select></td>"+   //收货仓库  仓库表:t_dict_warehouse
              "<td><input type='text' name='other_fee' id='other_fee'></td>"+  //其他费用
              "<td><input type='text' name='notes' id='notes'></td>"+   //备注
              "<td><a href='#' onclick = 'update()'>修改</a></td>"+   //修改
              "</tr>";

$("#table1").append(tr);

//在新增每一行的时候就为每一行添加'自动完成'和'失去焦点'事件

auto_nana("item_name" +i, "item_code"+i, "material_name"+i,"spec"+i,"producer"+i);  //绑定自动完成的事件
blur_nana("item_name" +i, "item_code"+i); // 绑定失去焦点的事件
i++;     
    }); //新增结束  
});

// {函数}失去焦点事件(‘品名’失去焦点之后清空) 
function blur_nana(obj_name1,obj_code1){
$("#" + obj_name1).blur(function(){
if($("#" + obj_code1).val() == ''){
$("#" + obj_name1).val('');
}else{
if($("#" + obj_name1).val() == ''){
$("#" + obj_code1).val('');
}
}
});

}

//name 和 code必须已知绑定关系(name和code已经存在一对一的关系)

obj_name:品名name文本框的id;

obj_code,:品名code文本框的id;

obj_material:材质文本框的id;obj_spec:规格文本框的id;obj_producer:产地文本框的id

function auto_nana(obj_name, obj_code, obj_material,obj_spec,obj_producer){
//模糊查询'品名', 自动显示在下拉框中【‘合同录入’—‘品种明细’中的‘品种’】

var width = 167;

$('#' + obj_name).AutoComplete({
'data': '/admin/js/autocomplete/getCorpInfo2.jsp',
'ajaxDataType': 'json', 
'ajaxParams': {}, 
'itemHeight': 20,
'width': width,
'maxHeight': 300,
'beforeLoadDataHandler': function(keyword){  //选中之前进行的操作

$('#' + obj_code).val(''); //赋空值

【材质 规格 产地根据品名的联动 当品名清空时 三个也相应的清空】

$("#" + obj_material).val('');   //当清空"品名"的时候 "材质"也相应的清空
$("#" + obj_spec).val('');    //当清空"品名"的时候 "规格"也相应的清空
$("#" + obj_producer).val('');    //当清空"品名"的时候 "产地"也相应的清空

return true;
},
'afterSelectedHandler': function(data) {   //选中之后进行的操作:把查出来的数据存放到文本框中然后显示出来
$('#' + obj_code).val(data.cd);      // 输入‘品名’后把品名的code放到文本框中

//品名-材质二级联动
var width = 167; 
var item_code = $('#' + obj_code).val();  // 根据品名code文本框的id(obj_code)找到品名code的值
$('#' + obj_material).AutoComplete({
'data': '/admin/js/autocomplete/ getCorpInfo3.jsp',
'ajaxDataType': 'json',

'ajaxParams': {'item_code': item_code}, // 把item_code传到getCorpInfo3.jsp中,以'品名的code'作为条件查出材质,并模糊显示在下拉框中

'itemHeight': 20,
'width': width,
'maxHeight': 300,
'beforeLoadDataHandler': function(keyword){  //选中之前进行的操作
//$("item_code"+i+"").val(''); //赋空值
return true;
},
'afterSelectedHandler': function(data) {   //选中之后进行的操作:把查出来的数据存放到文本框中然后显示出来
  }
});

//品名-规格二级联动
var width = 167; 
var item_code = $('#' + obj_code).val();
$('#' + obj_producer).AutoComplete({
'data': '/admin/js/autocomplete/getCorpInfo5.jsp',
'ajaxDataType': 'json', 
'ajaxParams': {'item_code': item_code},
'itemHeight': 20,
'width': width,
'maxHeight': 300,
'beforeLoadDataHandler': function(keyword){  //选中之前进行的操作
//$("item_code"+i+"").val(''); //赋空值
return true;
},
'afterSelectedHandler': function(data) {   //选中之后进行的操作:把查出来的数据存放到文本框中然后显示出来
  }
});

//品名-产地二级联动
var width = 167; 
var item_code = $('#' + obj_code).val();
$('#' + obj_spec).AutoComplete({
'data': '/admin/js/autocomplete/getCorpInfo4.jsp',
'ajaxDataType': 'json', 
'ajaxParams': {'item_code': item_code},
'itemHeight': 20,
'width': width,
'maxHeight': 300,
'beforeLoadDataHandler': function(keyword){  //选中之前进行的操作
//$("item_code"+i+"").val(''); //赋空值
return true;
},
'afterSelectedHandler': function(data) {   //选中之后进行的操作:把查出来的数据存放到文本框中然后显示出来
  }
});

}
});
}
</script>

四级联动(品名、材质、规格、产地)和自动完成的功能相关推荐

  1. 通用四级联动下拉列表

    Author: shaoyun Email: shaoyun (at) yeah.net Date: 2010-09-03 Blog: http://shaoyun.cnblogs.com/ 前面的文 ...

  2. html中免费的四级联动,利用JS实现省市区街道四级联动插件

    特效描述:利用JS实现 省市区街道 四级联动插件.利用JS实现省市区街道四级联动插件 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 所在地区 所在地区 请选择 请选择 请选择 请选择 ...

  3. php用ajax方式实现四级联动

    使用ajax方式实现了下简单的 四级联动, 数据库: 以下为前台代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <titl ...

  4. laravel在线教育开发__四级联动(地区选择)

    在线教育开发之四级联动 为了实现地区的四级联动选择,可以使用ajax提交数据到控制器,控制器接收数据之后查询pid对应的area. 1.生成地区数据表,需要四级联动表源码请添+Q1143157804( ...

  5. weui 自定义datepicker 年月日 上午下午 四级联动的实现

    由于项目需求,需要自定制年月日上午这种四级联动,经过模仿官方weui.min.js实现了上述功能. 根据此种样式可以灵活实现月日两级联动或年月日 时分秒 六级联动功能.代码如下: <link r ...

  6. 小程序开发--地区选择四级联动(选择省,市,县,镇)

    前端时间接到一个项目,里面有涉及到地区选择四级联动(即能选择到镇).自己去网上收罗了一波,也没发现有很详细的,所以就自己来写,写完总结一下. 首先地址选择小程序有自带一个组件,我们就先来看看这个组件: ...

  7. android三级联动、四级联动(地区选择)

    GitHub地址:https://github.com/gamekonglee/RegionSelector 先上效果图: allprojects { repositories { .. maven ...

  8. vue 四级联动 地址联动 vue级联选择

    vue 四级联动效果 实现前提 首先看下,我们的开发环境及数据封装特点: 第一: 开发框架vue-cli3 elementUI 第二: 数据封装情况,详见代码部分 data中的 data; 满足以上2 ...

  9. vue省市区镇四级联动

    vue省市区镇四级联动 参考文档https://terryz.gitee.io/vue/#/region/demo 使用npm把插件安装到项目中 npm i -S v-region 在项目入口main ...

最新文章

  1. SSL/TLS协议详解
  2. CG CTF CRYPTO Keyboard
  3. 深入浅出,对于代理模式的理解(代理模式与外观模式的区别)
  4. (Z)标准电阻值的来历及色环电阻值定义
  5. Bootstrap--圆角图片`圆形图
  6. Xamarin Mono for VS开发窗体标题(Title)乱码解决方案
  7. html5怎么产生手风琴效果,Html5 js如何实现手风琴效果
  8. fork() 和 vfork()
  9. (转)基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作...
  10. Docker下redis与springboot
  11. linux 2.6线程创建源码分析
  12. BZOJ 1304: [CQOI2009]叶子的染色
  13. 回来bool的函数无return时返回true还是false
  14. java file 权限_Java文件权限(设置)
  15. C# MVC 过滤器
  16. 叉乘点乘混合运算公式_初中数学根式运算法则公式
  17. Mac | 替换系统自带的壁纸
  18. 详解springcloud微服务技术栈(一)
  19. 微信小程序版“美图秀秀”源码
  20. NVMe over Fabric诞生记——RDMA篇

热门文章

  1. web应用程序开发过程(百度搬运)
  2. MYSQL配置环境变量
  3. 摒除GITHUB“祸害”,跟GITHUB说拜拜 Fcloud自由安全的栖息之地
  4. 计算机箱图和结构,机箱设计结构篇 内部结构
  5. 修改 CentOS8内置的yum镜像地址
  6. 你的英语目前处在什么样的水平?
  7. 用C语言实现LED1/LED2/LED3三盏灯点亮
  8. [BZOJ4808] 马(最大独立集,最大流)
  9. dll依赖查看工具Depends
  10. IDEA版本过低,配置更高版本