手册

https://select2.org/getting-started/basic-usage

http://select2.github.io/select2/

http://video.tudou.com/v/XMjgyNjg2OTE0OA==.html?spm=a2h0k.8191414.0.0&from=s1.8-1-1.2

插件下载地址:

链接:https://pan.baidu.com/s/1XV9DOzZX3zgqKOUnvPaJ7Q 密码:gnv2

思路

  1. 预加载select2的js样式
  2. onchange获取select框里的数据后发送ajax
  3. 控制器处理好后返回结果.
  4. 如果是ecshop搜索后返回的页面,替换整个页面,需要改写call方法为JQuery的ajax,添加成品与半成品的对应关系 时需要把事件绑定到document上才能抓到页面的元素

1. 如果是自己写的ajax这样就可以了.

html里

<link href="../../js/select2/select2.css" rel="stylesheet" />
<script src="../../js/select2/select2.js"></script> <div class="select2div"></div>
<select class="js-example-basic-multiple add_semi_sn_relate" name="sn_type[]" sn_id="{$sn.id}" multiple="multiple">
{foreach from=$semi_sninfo item=v}
<option value="{$v.sn}" {if in_array($v.sn,$sn['semi_sn_arr'])}selected="selected"{/if} >{$v.sn_name}</option>
{/foreach}
<!-- <option value="111" >111</option>
<option value="222" >2222</option>
<option value="333" >333</option> --> </select>
<script type="text/javascript">
$(document).ready(function() { $(".add_semi_sn_relate").select2(); //预加载select2效果 //添加成品与半成品的对应关系 添加对应关系时需要把事件绑定到document上才能抓到页面的元素
$(document).on("change",'.add_semi_sn_relate',function() {
var sns = $(this).val(); //当option里的值改变时获取它里的值,如果有多个,会获取到以,号隔开的值
var sn_id = $(this).attr('sn_id'); var url = 'product_sn.php?act=select2addGoodsRelate&sns=' + sns + '&sn_id=' + sn_id;
// return false;
$.get(url,function(data,status){
var data = data;
// return false;
var data = JSON.parse(data);
if(data.code>0){
alert(data.msg);
}else{
// alert(data.msg);
// listTable.loadList();
}
});
});
</script>

控制器里

elseif ($_REQUEST['act'] == 'select2addGoodsRelate')
{
$sns = empty($_REQUEST['sns']) ? '' : trim($_REQUEST['sns']);
if($sns=='null'){
$sns = '';
} $sn_id = empty($_REQUEST['sn_id']) ? '' : trim($_REQUEST['sn_id']);
$sql = "UPDATE wdm_product_sn SET semi_sn = '".$sns."' WHERE id = $sn_id";
wdmlog('第'.__LINE__.'行','product_sn','select2addGoodsRelate');
wdmlog($sql,'product_sn','select2addGoodsRelate');
$db->query($sql); $ret['code']=0;
$ret['msg']= '添加成功';
echo json_encode($ret,JSON_UNESCAPED_UNICODE);die;
}

2. 如果是ecshop里,需要改写call方法为JQuery的ajax方法,才可以select2需要JQuery支持,ecshop原生的call与JQuery冲突.表格上面的搜索和下面翻页需要改写

pageheader_list.htm头页面里引入jquery.listtable.js

把 pageheader.htm复制一份改为pageheader_list.htm

在pageheader_list.htm里删除listtable.js引入jquery.listtable.js

D:\phpStudy\WWW\work\wdm\trunk\www.wdmcake.cn\www\admin\templates\pageheader_list.htm

{insert_scripts files="../admin/js/jquery.listtable.js"}

product_sn_list.htm页面引入jquery-1.11.1.min.js

D:\phpStudy\WWW\work\wdm\trunk\www.wdmcake.cn\www\admin\templates\product_sn_list.htm

jquery.listtable.js下载地址

链接:https://pan.baidu.com/s/1CYXvzW4WFRkygkx8q5x48w 提取码:vlrx

{include file="pageheader_list.htm"}
{insert_scripts files="../js/utils.js}
<!-- 这里指的是引入的根目录下的/js/test.js -->
{insert_scripts files="../admin/js/validator.js,jquery-1.11.1.min.js"} <link href="../../js/select2/select2.css" rel="stylesheet" />
<script src="../../js/select2/select2.js"></script> <form action="javascript:searchproduct();" name="addForm" id="addForm">
<!-- 分类 -->
选择城市
<select name="city" id="city" onchange="get_city();">
<option value="-1">所在城市</option>
{html_options options=$goods_city}
</select>
<select name="sn_gid" id="sn_gid" onchange="get_products();" style="width:135px;">
<option value="0">请选择商品</option>
{foreach from=$goods_list item=goods}
<option value="{$goods.goods_id}">{$goods.goods_sn} {$goods.goods_name}</option>
{/foreach}
</select>
<!-- 商品:<input type="text" name="sn_name" value="" size="12" /> --> <select name="sn_pid" id="sn_pid">
<option value="0">请选择规格</option>
{foreach from=$products item=product}
<option value="{$product.product_id}">{$product.product_name}</option>
{/foreach}
</select> <select name="sn_pizi" id="sn_pizi">
<option value="0">请选择坯子</option>
{foreach from=$pizi_list item=pizi}
<option value="{$pizi.title}">{$pizi.title}</option>
{/foreach}
</select> <!-- sn_type --><input type="hidden" name="sn_type" id="sn_type" value="1" size="15" />
<!-- 半成品品号 --><input type="hidden" name="semi_sn" value="" size="5" />
<!-- 半成品品名 --><input type="hidden" name="sn_name" value="" size="5" />
成品品号<input type="text" name="sn_sn" value="" size="15" />
<!-- 新货品 --><input type="hidden" name="sn_newsn" value="" size="5" />
货品价格<input type="text" name="sn_price" value="" size="5" />
<input type="button" value="添加成品" class="button" onclick="add_sn();" />
<input type="submit" value="搜索" class="button"/>
</form> <script type="text/javascript">
function searchproduct()
{
//拿到表单里需要的值
listTable.filter.gid = document.forms['addForm'].elements['sn_gid'].value;
listTable.filter.pizi = document.forms['addForm'].elements['sn_pizi'].value;
listTable.filter.sn = document.forms['addForm'].elements['sn_sn'].value;
listTable.filter.newsn = document.forms['addForm'].elements['sn_newsn'].value;
listTable.filter.sn_price = document.forms['addForm'].elements['sn_price'].value;
listTable.filter.sn_name = document.forms['addForm'].elements['sn_name'].value;
listTable.filter.goods_city = document.forms['addForm'].elements['city'].value;
listTable.loadList(); //调用jquery.listtable.js里的listTable.loadList()方法发送ajax
}
//在ajax的成功里改写listTable.listCallback
listTable.listCallback = function(result, txt)
{ if (result.error > 0)
{
alert(result.message);
}
else
{
try
{
document.getElementById('listDiv').innerHTML = result.content; if (typeof result.filter == "object")
{
listTable.filter = result.filter;
} listTable.pageCount = result.page_count;
$(".add_semi_sn_relate").select2();
}
catch (e)
{
alert(e.message);
}
}
}
</script>

jquery.listtable.js里

D:\phpStudy\WWW\work\wdm\trunk\www.wdmcake.cn\www\admin\js\jquery.listtable.js

/**
* 载入列表
*/
listTable.loadList = function()
{
var args = "act="+this.query+"" + this.compileFilter();
$.ajax({
type:"POST",
url:listTable.url,
data:args ,
dataType:"json",
success:this.listCallback
}); }

select2插件+ajax笔记的更多相关文章

  1. Select2插件ajax方式加载数据并刷新页面数据回显

    今天在优化项目当中,有个要在下拉框中搜索数据的需求:最后选择使用selec2进行开发: 官网:http://select2.github.io/ 演示: 准备工作: 文件需要引入select2.ful ...

  2. select2插件使用小记2 - 多选联动 - 笔记

    这是select2插件使用的第二篇,可参考第一篇 select2插件使用小记.上一篇主要是关于基本的使用,这篇主要是关于多选,及联动的.侧重点不同. 效果图如下: 遵从W3C标准:结构.样式.行为.以 ...

  3. select2插件

    引入select2插件<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min. ...

  4. 基于Metronic的Bootstrap开发框架经验总结(3)--下拉列表Select2插件的使用

    在上篇<基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用>介绍了数据的分页处理,使用了Bootstrap Paginator插件,另外 ...

  5. Metronic_下拉列表Select2插件的使用

    这个插件是基于Select的扩展插件,能够提供更加丰富的功能和用户体验,它的github官网地址为:https://select2.github.io/,具体的使用案例,可以参考地址:https:// ...

  6. Jquery笔记和ajax笔记

    Jquery笔记:jQuery是一个JavaScript函数库,专为事件处理设计 1.jQuery的引入 <script text="type/javascript" src ...

  7. jQuery的下拉选select2插件用法

    1转自:https://www.jb51.net/article/95561.htm 用了这么久的Select2插件,也该写篇文章总结总结.当初感觉Select2不是特别好用,但又找不到比它更好的下拉 ...

  8. 01:jQuery的下拉选select2插件用法

    1.1 select2插件基本使用 1.下载select2插件 1. 下载地址:https://github.com/select2/select2 2.官网地址:https://select2.or ...

  9. JS原生ajax与Jquery插件ajax深入学习

    序言: 近来随着项目的上线实施,稍微有点空闲,闲暇之时偶然发现之前写的关于javascript原生xmlHttpRequest ajax方法以及后来jquery插件ajax方法,于是就行了一些总结,因 ...

随机推荐

  1. python进阶11 正则表达式

    python进阶11 正则表达式 一.概念 #正则表达式主要解决什么问题? #1.判断一个字符串是否匹配给定的格式,判断用户提交的又想的格式是否正确 #2.从一个字符串中按指定格式提取信息,抓取页面中 ...

  2. [Java]ArrayList、LinkedList、Vector、Stack的比较

    一.介绍 先回顾一下List的框架图 由图中的继承关系,可以知道,ArrayList.LinkedList.Vector.Stack都是List的四个实现类. AbstractList是一个抽象类,它 ...

  3. NET Core实现OAuth2.0的ResourceOwnerPassword和ClientCredentials模式

    NET Core实现OAuth2.0的ResourceOwnerPassword和ClientCredentials模式 前言 开发授权服务框架一般使用OAuth2.0授权框架,而开发Webapi的授 ...

  4. input文本框默认提示

    今天闲暇时间把自己以前写的一个文本框默认提示函数改成了一个小插件.下面是代码 1.引入jQuery库 <script src="http://code.jquery.com/jquer ...

  5. 牛客网Java刷题知识点之正则表达式(Matcher、Pattern)

    不多说,直接上干货! 正则表达式是什么? 正则表达式是一种可以用于模式匹配和替换的规范, 一个正则表达式就是由普通的字符(例如字符a到z) 以及特殊字符(元字符) 组成的文字模式, 它用以描述在查找文 ...

  6. 序列化流与反序列化流,打印流,工具类commons-IO

    1序列化流与反序列化流 用于从流中读取对象的操作流 ObjectInputStream    称为 反序列化流 用于向流中写入对象的操作流 ObjectOutputStream   称为 序列化流 特 ...

  7. 9、调整数组顺序使奇数位于偶数前面------------>剑指offer系列

    题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 思路 首先寻找第一个 ...

  8. Java多线程常见问题

    1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和 ...

  9. Python3+Selenium3+webdriver学习笔记6(多窗口切换处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*- from selenium import webdriverfrom selenium.webdriver.co ...

  10. node执行cmd命令方法

    var cmd='tasklist';//获取 子进程模块的exec方法,用于执行cmd命令var exec = require('child_process').exec; //运行 定义的cmd命 ...