关于两个文本框数据联动问题

maybel 2011-03-16 04:51:04
问题:需要实现两个文本框里的数据的同步(从数据库里面读的数据)
数据表: 字段1 字段2 字段3
101 AA BB
102 AB BA
103 AC CA
... ... ...


HTML:文本框1 文本框2

需要解决的东西:比如我在文本框1里输入101 在鼠标选到文本框2,里面的值为AA

在文本框1输入103 文本框2里面的值为 AC


基本就是这个逻辑,不知道高人们有什么好点的办法。因为数据量很大,如果使用下拉菜单的方式 很难第一时间在下拉表找到。所以改为手输。。

...全文
678 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
maybel 2011-03-18
  • 打赏
  • 举报
回复
非常感谢 falizixun2
该功能已经实现,,谢谢你 已结贴 100分
maybel 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 falizixun2 的回复:]
认真看了下楼主的要求,其实比数组操作还更简单些,就是连接数据库麻烦,我的例子里还需要遍历数组,而你的要求里,查询数据具有唯一性,如果楼主的数据量比较大的话,也没有关系,在t1里输入的是一个确定的值,比如100,100几,都是确定的值,这个值对应楼主表中的100,101等字段1或主键ID!建议用主键,效率会更高!根据ID或唯一数字查出来的数据是唯一的。

根据以上分析情况,把我的那个ASP代码……
[/Quote]

按照你的意思我做了一下,数组可以实现,但是通过数据库的读取没调试正确。老是出错 提示err
我的数据库操作读取input.asp操作如下:
<!--#include file="inc/conn.asp"-->
<%
Oid=request.querystring("da")
set rs=Server.CreateObject("ADODB.RecordSet")
sql="select * from Online where POline="&Oid
rs.open sql,conn,1,1
if not rs.eof then
response.write rs("Oab")
else
response.write "抱歉!输入的数字不符合规则,查无数据!"
end if
response.End()
%>
kaifadi 2011-03-17
  • 打赏
  • 举报
回复
楼主如果你测试还不行,就把问题详细描述继续问,1个问题引发出的问题在10个以内,我都可以接受,超过的话,我会受不了!
kaifadi 2011-03-17
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
居然没有显示出颜色。代码上改那个红色体部分,

乱码编码解决通用方法:保证3个地方编码一致:

1文件本身编码(用记事本打开另存),
2页面代码:都为UTF-8
3数据库编码:都为UTF-8(这个因数据库而异)你的问题里不需要设置了!

三者统一都用UTF-8或其他,这样就能保证不乱码!还有人喜欢用GB2312,视情况而定,不过还是推荐用UTF-8编码
kaifadi 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 maybel 的回复:]

引用 13 楼 falizixun2 的回复:
引用 11 楼 maybel 的回复:

单独运行input.asp出现以下错误:
语法错误 (操作符丢失) 在查询表达式 'POline=' 中。
/RepProduct/input.asp, 第 20 行


如果是运行input.asp?da=101

Microsoft JET Database Engine (0x80……
[/Quote]
因为你的查询结果里有中文,导致了页面乱码!这个问题你可以改改头部文件即可!如下:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>jquery xml解析</title>
<script type="text/javascript" src="jq.js"></script>
<script type="text/javascript">
$(function(){
$('#t2').focus(function(){
$.ajax({
url:'input.asp',
type:'get',
async:false,
data:{da:parseInt($('#t1').val())},
error:function(e,b){alert(b);},
success:function(data){
//alert(data);
$('#t2').val(data);
}

});
});

});


</script>
</head>
<body>
<input type="text" id="t1"><br>
<input type="text" id="t2"><br>
...
</body>
</html>



asp文件顶部加:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
response.charset="utf-8"
response.codepage="65001"
'...数据库连接和操作的其他代码
%>


注意:前端html文件和后台asp文件都要用记事本打开另存为,编码方式选择UTF-8保存,文件本身也要UTF-8这样中文才不会乱码!


如果还不清楚,就“ASP乱码”这一个问题以前论坛里就经常有人问的!CSDN论坛的查找里找找很容易找到处理方法的!
  • 打赏
  • 举报
回复
一看楼主的需求,感觉你只需要输入字段1就是了,没必要显示字段2(由字段1已经确定了)。
maybel 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 falizixun2 的回复:]
引用 11 楼 maybel 的回复:

单独运行input.asp出现以下错误:
语法错误 (操作符丢失) 在查询表达式 'POline=' 中。
/RepProduct/input.asp, 第 20 行


如果是运行input.asp?da=101

Microsoft JET Database Engine (0x80040E07)
标准表达式中数据类型不匹配。
/……
[/Quote]

非常感谢你,通过使用 sql="select * from Online where POline='"&Oid&"'"
进行调试,已经没有错误报出,在文本框一输入值后在文本框2可以获得,不过文本框2里面的内容是乱码,不知道是何情况 注入类似 ���� 的。
kaifadi 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 maybel 的回复:]

单独运行input.asp出现以下错误:
语法错误 (操作符丢失) 在查询表达式 'POline=' 中。
/RepProduct/input.asp, 第 20 行


如果是运行input.asp?da=101

Microsoft JET Database Engine (0x80040E07)
标准表达式中数据类型不匹配。
/RepProduct/input.asp, ……
[/Quote]
单独运行肯定不行,没有参数给他,就等于执行了一个sql="select * from Online where POline="语句,肯定会报错的。

运行input.asp?da=101报数据类型不匹配!
说明:sql="select * from Online where POline="里的POline字段不是数字字段,要嘛改POline为数字字段,或者改SQL语句,如下:

sql="select * from Online where POline='"&Oid&"'"

看看结果为什么,最后真理总是在测试中产生的!你一定可以成测试OK的!
Zqlei 2011-03-17
  • 打赏
  • 举报
回复
1. 通过Ajax异步访问数据库

2. 在加载页面的是否把需要显示的列表值,写到<script>标签中,当选择一个下拉框时用过Javascript语言,加载另一个下拉框的值
maybel 2011-03-17
  • 打赏
  • 举报
回复
单独运行input.asp出现以下错误:
语法错误 (操作符丢失) 在查询表达式 'POline=' 中。
/RepProduct/input.asp, 第 20 行


如果是运行input.asp?da=101

Microsoft JET Database Engine (0x80040E07)
标准表达式中数据类型不匹配。
/RepProduct/input.asp, 第 20 行
kaifadi 2011-03-17
  • 打赏
  • 举报
回复
在地址栏输入:
http://localhost/input.asp?da=101
看看是否能查到数据并输出!
kaifadi 2011-03-16
  • 打赏
  • 举报
回复
认真看了下楼主的要求,其实比数组操作还更简单些,就是连接数据库麻烦,我的例子里还需要遍历数组,而你的要求里,查询数据具有唯一性,如果楼主的数据量比较大的话,也没有关系,在t1里输入的是一个确定的值,比如100,100几,都是确定的值,这个值对应楼主表中的100,101等字段1或主键ID!建议用主键,效率会更高!根据ID或唯一数字查出来的数据是唯一的。

根据以上分析情况,把我的那个ASP代码input.asp改为如下:

'这里数据库连接的代码省略......
id=request.querystring("da") '这个是从t1文本框输入获取过来的数字
sql="select * from 表 where 字段1=&"id '这个字段1如果具有唯一性,那么查出来的数据只有一条!
rs.open sql,conn,1,1
if not rs.eof then
response.write rs("字段2") '如果操作的是第3个字段改改即可!
else
response.write "抱歉!输入的数字不符合规则,查无数据!"
end if




这样基本就OK了!根据这些细节再进一步扩展或修改即可!
kaifadi 2011-03-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 falizixun2 的回复:]

给你一个参考例子,先不考虑数据库应用,以数组来代替数据库,到时候只要你能把数据库里的数据放到数组里,该功能依然成立,从简单到复杂!例子代码,经过IE和火狐测试经通过:

input.htm:
HTML code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org……
[/Quote]

效果就是在t1文本框内输入100到105不同的值,然后焦点到t2里,系统自动会在t2文本框内显示AA到FF不同的字母!完成自动输入,该例子你可以按需要扩展成任何你需要的功能!
kaifadi 2011-03-16
  • 打赏
  • 举报
回复
给你一个参考例子,先不考虑数据库应用,以数组来代替数据库,到时候只要你能把数据库里的数据放到数组里,该功能依然成立,从简单到复杂!例子代码,经过IE和火狐测试经通过:

input.htm:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<title>jquery xml解析</title>
<script type="text/javascript" src="jq.js"></script>
<script type="text/javascript">
$(function(){
$('#t2').focus(function(){
$.ajax({
url:'input.asp',
type:'get',
async:false,
data:{da:parseInt($('#t1').val())},
error:function(e,b){alert(b);},
success:function(data){
//alert(data);
$('#t2').val(data);
}

});
});

});


</script>
</head>
<body>
<input type="text" id="t1"><br>
<input type="text" id="t2"><br>
...
</body>
</html>


后台ASP代码:input.asp:


<%
'暂时用数组代替数据库查询!这里可以做数据库操作,取出数据库数据赋给数组即可!
arr=Array("100","101","102","103","104","105")
brr=Array("AA","BB","CC","DD","EE","FF")
Dim da,k,j
j=0
k=0
da=CInt(request("da"))
For Each i In arr
If(CInt(i)=da)Then k=j
j=j+1
Next
response.write brr(k)
%>


以上代码经过本人测试,绝对可用!
suano 2011-03-16
  • 打赏
  • 举报
回复
页面交互想读取数据库中的内容只能用AJAX了
fengyuananan 2011-03-16
  • 打赏
  • 举报
回复
lz,如果用后台赋值的话,可以用textbox的textchanges()事件,在事件中获取第二个文本框的值,在赋值。。。
kaifadi 2011-03-16
  • 打赏
  • 举报
回复
推荐你用JQUERY库的$.ajax方法,简单快速,浏览器兼容问题少!
漫漫2009 2011-03-16
  • 打赏
  • 举报
回复
用AJAX,输入一个值之后用AJAX去后台查询将返回的值写入第二个文本框即可。

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧