<input type=text onfocus="Select1ID.style.visibility='';">
<select id="Select1ID" style="visibility:hidden" onblur="this.style.visibility='hidden';">
<option>1</option>
<option>2</option>
</select>
<br>
<input type=text onfocus="Select2ID.style.visibility='';">
<select id="Select2ID" style="visibility:hidden" onblur="this.style.visibility='hidden';">
<option>1</option>
<option>2</option>
</select>
<select id="Select1ID" style="visibility:hidden" onblur="this.style.visibility='hidden';">
<option>1</option>
<option>2</option>
</select>
<br>
<input type=text onfocus="Select2ID.style.visibility='';">
<select id="Select2ID" style="visibility:hidden" onblur="this.style.visibility='hidden';">
<option>1</option>
<option>2</option>
</select>
解决方案 »
- javascript 动态填加事件,并给事件处理函数传递参数问题
- 请高手指点迷津:在js的function如何加jsp代码!!谢谢!!谢谢!!
- ajax 调用返回值的问题
- 关于窗口弹出拦截
- JS如何根据选择的项创建表格
- 调用Google map v3的geocoder.geocode方法,出现异常信息
- 用javascript可否实现将一个表单做为一个邮件的附件提交出去
- 有关于把 activex 控件制作成cab包的问题。助者有分!
- 如何让脚本知道单元格内文字的为否被加粗(B)、斜体(I)、下划线(U)呢?
- win7系统下在cmd中 输入npm run dev后,项目能正常跑起来,但是整个cmd窗口就不能再输入任何东西了,这个怎么解决?
- 欢迎高手挑战:图片添加热点超链接的问题?讨论有分!!!
- 可以实现仅使用JavaScript做一个获取汉字拼音首字母的函数吗?
关于XMLHTTP.可以说,是一个很好的接合剂.把客户端和服务端的距离拉近了.
利用XMLHTTP.我们可以实现很多好的想法.这文章.实现了二级连动Select.
传统二级连动是把所有的数据都传到有客户端..
利用XMLHTTP.我们可以实时地返回我们所需要的数据.
select.htm程序代码:
<script language="JavaScript">
function GetResult(str)
{
/*
*--------------- GetResult(str) -----------------
* GetResult(str)
* 功能:通过XMLHTTP发送请求,返回结果.
* 参数:str,字符串,发送条件.
* 实例:GetResult(document.all.userid.value);
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-27 19:02
*--------------- GetResult(str) -----------------
*/
var oBao = new ActiveXObject("Microsoft.XMLHTTP");
oBao.open("POST","Server.asp?sel="+str,false);
oBao.send();
//服务器端处理返回的是经过escape编码的字符串.
//通过XMLHTTP返回数据,开始构建Select.
BuildSel(unescape(oBao.responseText),document.all.sel2)
}function BuildSel(str,sel)
{
/*
*--------------- BuildSel(str,sel) -----------------
* BuildSel(str,sel)
* 功能:通过str构建Select.
* 参数:str,字符串,由服务端返回的.有特定结构"字符串1,字符串2,字符串3"
* 参数:sel,要构建的Select
* 实例:BuildSel(unescape(oBao.responseText),document.all.sel2)
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-27 19:02
*--------------- BuildSel(str,sel) -----------------
*/
//先清空原来的数据.
sel.options.length=0;
var arrstr = new Array();
arrstr = str.split(",");
//开始构建新的Select.
for(var i=0;i<arrstr.length;i++)
{
sel.options[sel.options.length]=new Option(arrstr[i],arrstr[i])
}
}
</script>
<select name="sel" onChange="GetResult(this.value)">
<option value="">请选择
<option value="福建省">福建省
<option value="湖北省">湖北省
<option value="辽宁省">辽宁省
<select>
<select name="sel2"></select>
server.asp 服务器端处理.
程序代码:
<% @Language="JavaScript" %>
<%
function OpenDB(sdbname)
{
/*
*--------------- OpenDB(sdbname) -----------------
* OpenDB(sdbname)
* 功能:打开数据库sdbname,返回conn对象.
* 参数:sdbname,字符串,数据库名称.
* 实例:var conn = OpenDB("database.mdb");
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-12 8:18
*--------------- OpenDB(sdbname) -----------------
*/
var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname);
var conn = Server.CreateObject("ADODB.Connection");
conn.Open(connstr);
return conn;
}
var oConn = OpenDB("data.mdb");
var province = Request("sel");
var arrResult = new Array();
var sql = "select city from china where province='"+province+"'";
var rs = Server.CreateObject("ADODB.Recordset");
rs.Open(sql,oConn,1,1);
while(!rs.EOF)
{
//遍历所有适合的数据放入arrResult数组中.
arrResult[arrResult.length] = rs("city").Value;
rs.MoveNext();
}
//escape解决了XMLHTTP。中文处理的问题.
//数组组合成字符串.由","字符串连接.
Response.Write(escape(arrResult.join(",")));
%>
数据库设计
data.mdb
表china.
字段
id 自动编号
province 文本
city 文本表:china 数据:
id province city
1 福建省 福州市
2 福建省 厦门市
3 福建省 泉州市
4 湖北省 武汉市
5 湖北省 荆州市
6 湖北省 宜昌市
7 辽宁省 沈阳市
8 辽宁省 大连市
9 辽宁省 盘锦市
文本框的点击事件改成获取焦点事件.
可以通过下接框的变化来给文本框传值.<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
<script language=javascript>
var address = new Array("北京","上海","重庆","香港","台北","成都");
function getSel(selOption,selText,obj){
if(selText==null) return "";
var selHtml = "<SELECT NAME='selOpt' onchange=getValue(this.value)>";
//这地方在选择后如何让obj对象的值为所选择的值?
var len = selText.length;
for(var i=0;i<len;i++){
selHtml += "<OPTION VALUE='"+selOption[i]+"'>"+selText[i]+"</OPTION>";
}
selHtml += "</SELECT>";
document.all.sel.innerHTML = selHtml;
//存储对象.
oOld = obj;
}//全局变量,取得文本获取焦点的对象.
var oOld = null;
function getValue(o)
{
//下拉框值变化时,把值传到文本框.
var sel = document.all.selOpt;
str = sel.options[sel.options.selectedIndex].value;
oOld.value = str;
}
</script>
</head><body>
<form name="test">
<table border="1" width="300" cellpadding="0" cellspacing="0">
<tr><Td>
<input type="text" name="txt1" value="1" onfocus="getSel(address,address,this)" ></td></tr>
<tr><Td><input type="text" name="txt2" value="1" onfocus="getSel(address,address,this)"></td></tr><tr><Td><input type="text" name="txt3" value="1" onfocus="getSel(address,address,this)"></td></tr>
<tr><Td><input type="text" name="txt4" value="1" onfocus="getSel(address,address,this)"></td></tr>
</table>
<div id="sel"></div>
</form>
</body></html>
我要的就是这种效果,但<DIV id="sel"></DIV>的显示位置还不对,比如第二个文本框获得焦点时,需要<DIV id="sel"></DIV>在第二个文本框的位置上显示,即下拉列表处在文本框的上面显示。当失去焦点时,下拉列表就消失而显示文本框。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
<script language=javascript>
function hide()
{
document.all('txt1').style.display='none';
document.all('select1').style.display='';
}
function show()
{
document.all('txt1').style.display='';
document.all('txt1').value=document.all('select1').options[document.all('select1').options.selectedIndex].value;
document.all('select1').style.display='none';
}
</script>
</head><body>
<form name="test">
<table border="1" width="300" cellpadding="0" cellspacing="0">
<tr><Td>
<input type="text" id="txt1" name="txt1" value="1" onfocus="hide()" >
<select id='select1' onchange=show() style="display:none">
<option value='1'>1</option>
<option value='2'>2</option>
</select>
</td></tr>
<tr><Td><input type="text" name="txt2" value="1" ></td></tr><tr><Td><input type="text" name="txt3" value="1" ></td></tr>
<tr><Td><input type="text" name="txt4" value="1" ></td></tr>
</table>
<div id="sel"></div>
</form>
</body></html>
简单方法实现的。就做了一个文本框。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>test</title>
<script language=javascript>
function hide(num)
{ txt=document.all('txt'+num.toString());
select=document.all('select'+num.toString());
txt.style.display='none';
select.style.display='';
select.focus();
}
function show(num)
{
txt=document.all('txt'+num);
select=document.all('select'+num);
txt.style.display='';
txt.value=select.options[select.options.selectedIndex].value;
select.style.display='none';
}
</script>
</head><body>
<form name="test">
<table border="1" width="300" cellpadding="0" cellspacing="0">
<tr><Td>
<input type="text" id="txt1" name="txt1" value="1" onfocus="hide('1')" style="width:90">
<select id='select1' onchange=show('1') style="display:none" style="width:90" onBlur="show('1')">
<option value='1'>1</option>
<option value='2'>2</option>
</select>
</td></tr>
<tr><Td><input type="text" name="txt2" value="1" onfocus="hide('2')" style="width:90">
<select id='select2' onchange=show('2') style="display:none" style="width:90" onBlur="show('2')">
<option value='3'>3</option>
<option value='4'>4</option>
</select>
</td></tr><tr><Td><input type="text" name="txt3" value="1" ></td></tr>
<tr><Td><input type="text" name="txt4" value="1" ></td></tr>
</table>
</form>
</body>
其实我的需求只要能实现如何将<DIV>的位置根据用户所选择的文本框的位置而移动,并且大小等于用户所选择文本框的大小。只是我至今无法实现位置移动和大小控制。还望各位高手给予提示。谢谢!