制作 类似 google 下拉框的用户自定义控件的实现思路及代码参考
来源:互联网 发布:mysql数据库命令大全 编辑:程序博客网 时间:2024/04/30 06:25
如果做如下效果:
听很多人说过 google 输入条件下拉筐输入时,自动出现一些匹配的信息,这种模式相当不错.
E8.Net架构中 已经把种输入模式做成了控件,帮助系统改善各种录入项的用户体验.
实现思路是:
1、组合 一个 TextBox 控件 、 一个DIV 控件 及 一个 SELECT | OPTION 控件
2、通过javascript动态 指定 DIV控件的位置 及 SELECT |OPTION 控件 的 options 内容
3、通过一些 事件脚本 onkeydown onmouseover....实现一些效果
代码参考:
部分脚本代码参考:
E8.Net工作流平台为企业应用开发提供了一个起点,欢迎访问 :http://www.feifanit.com.cn/productFlow.htm
听很多人说过 google 输入条件下拉筐输入时,自动出现一些匹配的信息,这种模式相当不错.
E8.Net架构中 已经把种输入模式做成了控件,帮助系统改善各种录入项的用户体验.
实现思路是:
1、组合 一个 TextBox 控件 、 一个DIV 控件 及 一个 SELECT | OPTION 控件
2、通过javascript动态 指定 DIV控件的位置 及 SELECT |OPTION 控件 的 options 内容
3、通过一些 事件脚本 onkeydown onmouseover....实现一些效果
代码参考:
<input name='itemname' autocomplete="off" id='itemname' value='' onkeydown="focusToDropDown('itemsForDropdown')" onkeyup="getItemsForDropdown('itemsForDropdownLayer','itemsForDropdown','itemname','hidXml',this);" />
<div id='itemsForDropdownLayer' onmouseover="MoverToDropDownLayer('itemsForDropdown');" style='display: none; position:absolute; width:120px; left: 120; top: 90; z-index:2'
onmouseout="hideMe('itemsForDropdownLayer','none');">
<select id='itemsForDropdown' class="combo-list" onkeydown="selectOnReturn('itemsForDropdownLayer','itemname',this);" onclick="getSelectedLabel('itemsForDropdownLayer','itemname',this);"
style='width: 100%;' size='16'> <option value=''></option> </select> </div>
<div id='itemsForDropdownLayer' onmouseover="MoverToDropDownLayer('itemsForDropdown');" style='display: none; position:absolute; width:120px; left: 120; top: 90; z-index:2'
onmouseout="hideMe('itemsForDropdownLayer','none');">
<select id='itemsForDropdown' class="combo-list" onkeydown="selectOnReturn('itemsForDropdownLayer','itemname',this);" onclick="getSelectedLabel('itemsForDropdownLayer','itemname',this);"
style='width: 100%;' size='16'> <option value=''></option> </select> </div>
部分脚本代码参考:
function getItemsForDropdown(id,idSelect,idText,idFields,obj)
{
var object = document.getElementById(id);
var objSelect = document.getElementById(idSelect);
var objText = document.getElementById(idText);
var objFields = document.getElementById(idFields);
var i = 0;
var j=0;
var sCurr = '';
var soptText='';
var blnAdd = false;
if(objFields != null)
{ var sXml = objFields.value;
xmlDroplst.loadXML(sXml);
}
if(objText != null)
{
sCurr = objText.value;
}
if(object != null)
{
var nodes = xmlDroplst.documentElement.childNodes;
if(objSelect != null)
{
objSelect.options.length = 0; //清除内容
for (i=0;i<nodes.length;i++)
{
soptText = nodes(i).getAttribute("Text");
blnAdd = false;
if(sCurr == '')
{
blnAdd = true;
}
else
{
if(soptText.indexOf(sCurr) == 0)
{
blnAdd=true;
}
}
if(blnAdd == true)
{
objSelect.add(document.createElement("OPTION"));
objSelect.options[j].text= soptText;
objSelect.options[j].value=j;
j++;
}
}
}
object.style.left = absoluteLocation(obj, 'offsetLeft') - 2 + "px";
object.style.top = absoluteLocation(obj, 'offsetTop') + obj.offsetHeight + 2 + "px";
object.style.width = obj.offsetWidth + 2 + 'px';
hideMe(id,'');
}
}
//来源于XMLHTTP异步获取,
{
var object = document.getElementById(id);
var objSelect = document.getElementById(idSelect);
var objText = document.getElementById(idText);
var objFields = document.getElementById(idFields);
var i = 0;
var j=0;
var sCurr = '';
var soptText='';
var blnAdd = false;
if(objFields != null)
{ var sXml = objFields.value;
xmlDroplst.loadXML(sXml);
}
if(objText != null)
{
sCurr = objText.value;
}
if(object != null)
{
var nodes = xmlDroplst.documentElement.childNodes;
if(objSelect != null)
{
objSelect.options.length = 0; //清除内容
for (i=0;i<nodes.length;i++)
{
soptText = nodes(i).getAttribute("Text");
blnAdd = false;
if(sCurr == '')
{
blnAdd = true;
}
else
{
if(soptText.indexOf(sCurr) == 0)
{
blnAdd=true;
}
}
if(blnAdd == true)
{
objSelect.add(document.createElement("OPTION"));
objSelect.options[j].text= soptText;
objSelect.options[j].value=j;
j++;
}
}
}
object.style.left = absoluteLocation(obj, 'offsetLeft') - 2 + "px";
object.style.top = absoluteLocation(obj, 'offsetTop') + obj.offsetHeight + 2 + "px";
object.style.width = obj.offsetWidth + 2 + 'px';
hideMe(id,'');
}
}
//来源于XMLHTTP异步获取,
E8.Net工作流平台为企业应用开发提供了一个起点,欢迎访问 :http://www.feifanit.com.cn/productFlow.htm
- 制作 类似 google 下拉框的用户自定义控件的实现思路及代码参考
- ajax实现类似百度和google的下拉框原理
- 类似百度、google的模糊查询下拉列表显示制作
- 类似GOOGLE实现下拉框列表提示
- AutoCompleteExtender控件实现类似百度,谷歌,雅虎的下拉提示
- iOS 自定义选项卡控件(TabBar)的制作思路
- Android自定义控件--下拉刷新的实现
- 下拉刷新自定义控件的实现
- 一种无痕过渡下拉刷新控件的实现思路
- ajax实现类似google的搜索框
- 自定义类似ImageView的控件
- android 自定义ScrollView实现背景图片伸缩的实现代码及思路
- android 自定义ScrollView实现背景图片伸缩的实现代码及思路
- android 自定义ScrollView实现背景图片伸缩的实现代码及思路
- 实现类似新闻类app下拉刷新功能的思路(后端)
- PHP Dispath的实现思路及代码
- PHP用户登录后跳转回上一访问页面的实现思路及代码
- 利用Lucene制作搜索模块的思路及代码说明
- git 记记
- 洞悉过去,开启未来-InBetween零售业商业智能解决方案
- 第一次在.NET 北京俱乐部做演示
- 导入数据时是否需要禁用索引
- 商业智能(BI)在零售业中的应用
- 制作 类似 google 下拉框的用户自定义控件的实现思路及代码参考
- 通过pxe从网络启动安装Windows XP
- Hibernate 中oracle 主键的自动生成办法(笔记)
- 将架构作为语言:一个故事
- Programming Ruby 读书笔记(三)
- RO46 – 如何写RemObjects SDK 客户端 (.NET Version)
- 转
- 实时Java——为企业级市场热身
- 生成静态页面的基类