项目中经常用到Select标签,用封装好的方法获取option,可以避免冗赘的代码;

1.JSP--标签

<select class="width_md" name="queryProjectSupType" id="queryProjectSupType" title="项目类型-大类"></select>

2.JS1--实例化option

<script type="text/javascript">
$().ready(function(){
SELECT_LIST.getProjectSupType("queryProjectSupType", "${pd.queryProjectSupType}");
    })
</script>

3.JS2--数据封装

var SELECT_LIST = {
getProjectSupType: function(targetId,selectValue){
var url = 'dictionary/list/condition';
var dicType = {};
dicType.url = url;//ajax的url
dicType.targetId = targetId;//即将实例化的select标签的id
dicType.keyValue = "dicName";//从数据库获取的Json数据,将key为"dicName"的value赋值给option的value属性
dicType.keyName = "dicName";//从数据库获取的Json数据,将key为"dicName"的value赋值给option的text属性
dicType.condition = {codeId:8};//这是从传给数据库的数据筛选条件,因需求而异
dicType.firstOption = "<option value=''>请选择分类</option>";//默认的第一个option标签的text属性
dicType.selectedValue = selectValue;//标签实例化后,value等于selectValue的option,将默认选中
ajaxGenerateSelect(dicType);//ajax获取数据,生成option数据
}
}

3.JS3--1.ajax获取数据,2.js生成option标签,并放入Select标签

function ajaxGenerateSelect(selectObject){
var url = selectObject.url;
var method = selectObject.method ? selectObject.method : "POST";
var keyValue = selectObject.keyValue ? selectObject.keyValue : "id";
var keyName = selectObject.keyName ? selectObject.keyName : "name";
var selectedValue = selectObject.selectedValue ? selectObject.selectedValue : null;
var targetId = selectObject.targetId;
var condition = selectObject.condition ? selectObject.condition : {};
var afterHandle = selectObject.afterHandle;
var formatter = selectObject.formatter;
var firstOption = selectObject.firstOption;
var ajaxObject = {};
ajaxObject.url = url;
ajaxObject.method = method;
ajaxObject.data = JSON.stringify(condition);
ajaxObject.success = function(result){
var data = result.data;
var html = "";
if(firstOption){
html = firstOption;
}
for(var i=0;i<data.length;i++){
var selected = "";
var dataItem = data[i];
if(selectedValue == dataItem[keyValue]){
selected = "selected";
}
var option = "<option value='#(value)' #(selected)>#(name)</option>";
var nameValue = dataItem[keyName];
if(formatter){
nameValue = formatter(dataItem);
}
option = option.replace("#(value)", dataItem[keyValue]).
replace("#(name)",nameValue).replace("#(selected)", selected);
html += option;
}
$("#" + targetId).html('').append(html);
if(afterHandle){
afterHandle();
}
}; ajaxMethod(ajaxObject);
}

项目总结09:select标签下封装option标签的更多相关文章

  1. qt 删除xml某个标签下所有子标签

    代码如下: QDomNodeList listFlowChart= doc.elementsByTagName("device"); QDomElement flowChart = ...

  2. jquery 条件搜索某个标签下的子标签

    $("li[name='"+name+"']").find("a[value='" + value + "']").pa ...

  3. jquery怎么获取当前标签下的子标签

    1.var num1=$("ul > a:eq(0)").attr("ID");2.var num2=$("ul").children ...

  4. select下拉框的探索(<option></option>标签中能嵌套使用其它标签吗)

      select标签大家应该经常用到,有个问题可能没怎么注意过, select标签里面的option标签可以嵌套其它标签吗,比如i,span标签等? 经本人测试,答案是:可以嵌套其它标签,但审查元素会 ...

  5. html select与option标签

    1.select 元素 select 元素可创建单选或多选菜单.<select> 元素中的 <option> 标签用于定义列表中的可用选项 常用属性如下: autofocus: ...

  6. 来吧,HTML5之基础标签(下)

    <dialog> 标签 定义对话框或窗口. <dialog> 标签是 HTML 5 的新标签.目前只有 Chrome 和 Safari 6 支持 <dialog>  ...

  7. HTML常用标签(下)

    HTML常用标签(下) 1. 表格标签 1.1 语法 <table> <!--table定义表格--> <tr> <!--tr定义表格中的行--> &l ...

  8. IE6 P标签下DIV无法inline-block

    IE6 P标签下的DIV标签无法inline-block,使其触发了hasLayout属性再用csshack 使其inline还是不行,始终要换行 解决:把div标签替换成非div标签,比如span等 ...

  9. 帝国cms灵动标签下常用标签

    这里简单整理下灵动标签下的常用标签 标题名称:<?=$bqr['title']?>  <?=esub($bqr[title],22)?> 限制字符22个 标题链接:<?= ...

随机推荐

  1. 使用mysqlbinlog恢复指定表

    从整库备份的sql文件中导出某个表的sql语句时,vim查找到表的第一条INSERT语句后,按上下换行键计数INSERT语句的条数,然后按n yy复制,退出vim后,再新建一个文件,按p粘贴刚才的n条 ...

  2. 使用Node.JS监听文件夹变化

    使用Node.JS监听文件夹改变有许多应用场合,比如: 构建自动编绎工具 当源文件改变时,自动运行build过程,比如当你写CoffeeScript文件或SASS CSS文件时,保存之后可即时生成对应 ...

  3. LeetCode OJ 94. Binary Tree Inorder Traversal

    Given a binary tree, return the inorder traversal of its nodes' values. For example:Given binary tre ...

  4. 关于HashMap多线程下环形链表的总结

    目录 1. 概述 2. 敲黑板的点 3. 为什么会出现循环链表的情况呢?(jdk1.7) 4. jdk1.8中改进了resize方法 5. HashMap的线程安全问题 6. 总结 1. 概述 本文主 ...

  5. vscode vue 格式化 和emmet 提示

    ctrl+shift+p打开用户默认设置 设置vetur插件 "vetur.validation.template": false, "vetur.format.defa ...

  6. 在Virtualenv中使用Idle

    原创 在Virtualenv中使用Idle 本文适用于Linux系统,在DebianTesting上测试通过. 关于Virtualenv 先看一段Virtualenv这货的官方介绍: virtuale ...

  7. SimpleDateFormat 使用时出现的线程同步问题。。。

    错误使用: public static final SimpleDateFormat DAY_UI_MONTH_DAY_FORMAT = new SimpleDateFormat("MM-d ...

  8. windows7 IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET

    IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET windows7,部署在本地的IIS7里以后,结果不能访问承载SL的.aspx页面,而如果用.html承载则可以访问. 亲测可用修复办法 ...

  9. windows和linux下如何远程获取操作系统版本和主机名

    远程获取windows和linux操作系统版本和主机名需要具备以下条件: 假设 主机A(windows 7),ip:192.168.12.2 主机B(centos 6.3),ip:192.168.12 ...

  10. Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件mysql数据库,版本5.7 ...