js事件问题?

homel 2009-09-14 10:44:57
需求是这样的:
有两个文本框:
1.text1:在这里是输入前提示的功能,已经用到onkeyUp事件,当我输入诸如"wii sprot kit"时候,所有关于他的信息都会在一个层中显示,onclick事件后,文本框中的值为 1134>wii sport kit(A)
2.现在的需求是我想在text2中获取到:"1134"作为参数,然后再将1134这个参数传递到数据库中,获取信息,具体的不知道怎么做?
获取到text1中的值得js:

function getpara()
{
var arr,s,dis;
arr=document.form1.text1.value
s=arr.split(">")
dis=s[1]
document.form1.text2.value=dis;
}

只能写到这里了,后面的没有思路了,请大家给指导一下,谢谢
...全文
277 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
homel 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 toury 的回复:]
23楼、24楼:
getpara()具体放在什么位置你可以试一下。感觉你应该加强JS调试,以提升写代码的效率;FF下可以用 firebug,IE8可以用浏览器自带的“程序开发人员工具”,IE7及以下版本可以在你要中断的位置敲入:debugger;F11单步调试
[/Quote]
谢谢你的建议,我会努力的:)
toury 2009-09-15
  • 打赏
  • 举报
回复
23楼、24楼:
getpara()具体放在什么位置你可以试一下。感觉你应该加强JS调试,以提升写代码的效率;FF下可以用 firebug,IE8可以用浏览器自带的“程序开发人员工具”,IE7及以下版本可以在你要中断的位置敲入:debugger;F11单步调试
bo3235 2009-09-15
  • 打赏
  • 举报
回复
关注下,顺便膜拜下高人
toury 2009-09-14
  • 打赏
  • 举报
回复
【如10楼的,因为 <input name="frmchangshang">已经有很多事件了,所以我测试用了onclick事件,用homel(x)没有反应,所以我测试用getpara(), 】
【当我直接给 <input name="frmchangshang" onclick="homel(this)">
没有任何反应】
呵呵!兄弟:

1、当然用getpara()了。homel(x)是AJAX的回调函数,用来处理AJAX返回数据的;
2、事件的问题你只要注意事件的优先级就可以了。比如你想让getpara()最先执行,那就用onmousedown()

homel 2009-09-14
  • 打赏
  • 举报
回复
当我直接给<input name="frmchangshang" onclick="homel(this)">
没有任何反应
homel 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 toury 的回复:]
后台:
例如,后台这样写:
<%
response.charset="gbk"//防止乱码
id=request("id")
if len(id)>0 then
  sql="SELECT 字段1,字段2 FROM 表 WHERE id="&id
  set rs=conn.execute(sql)
  s=rs(0)&","&rs(1)
  rs.close
  set rs=nothing
  conn.close
  set conn=nothing

  response.write s'得到的是类似"字段1的值,字段2的值",那么前台返回就是这个字串。
  '你也可以把它组成为JSON格式。。。。。。。。
  response.end
 
end if
%>
前台的AJAX回调函数:
function homel(x){
  if (x.readyState==4){
    if(x.status==200||x.status==0){
      var s=x.responseText;
      if(s.length==0){alert('wrongwrongwrong~~~');return;}
      document.form1.text2.value=s.split(',')[0];
      document.form1.text2.value=s.split(',')[1];
      //如果是JSON格式的数组就更方便了eval(s)就是数组对象了...
      x=null;
    }
  }
}

[/Quote]

谢谢,我这样试试
homel 2009-09-14
  • 打赏
  • 举报
回复
如10楼的,因为<input name="frmchangshang">已经有很多事件了,所以我测试用了onclick事件,用homel(x)没有反应,所以我测试用getpara(),
ajaxcode后台代码:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%response.Buffer=true
response.Expires=0
Response.ContentType="text/xml"%>
<!--#include file="../conn/connready.asp"-->
<%

dim return,rule
rule=request.QueryString("id")
sql="select price_notax from item_price_list_lines where item_id="&rule
set rs=server.CreateObject("Adodb.recordset")
rs.open sql,conn,1,1
if not rs.eof then
rs.movelast
return=rs("price_notax")
else
return="1"
end if
rs.close
set rs=nothing
response.write(rule&return)

%>


不知道是不是自己调用错了,我比较粗心
toury 2009-09-14
  • 打赏
  • 举报
回复
后台:
例如,后台这样写:
<%
response.charset="gbk"//防止乱码
id=request("id")
if len(id)>0 then
sql="SELECT 字段1,字段2 FROM 表 WHERE id="&id
set rs=conn.execute(sql)
s=rs(0)&","&rs(1)
rs.close
set rs=nothing
conn.close
set conn=nothing

response.write s'得到的是类似"字段1的值,字段2的值",那么前台返回就是这个字串。
'你也可以把它组成为JSON格式。。。。。。。。
response.end

end if
%>
前台的AJAX回调函数:
function homel(x){
if (x.readyState==4){
if(x.status==200||x.status==0){
var s=x.responseText;
if(s.length==0){alert('wrongwrongwrong~~~');return;}
document.form1.text2.value=s.split(',')[0];
document.form1.text2.value=s.split(',')[1];
//如果是JSON格式的数组就更方便了eval(s)就是数组对象了...
x=null;
}
}
}
homel 2009-09-14
  • 打赏
  • 举报
回复
火星人,下面的代码你看看,不知道那里出错了
因为text1已经有事件了,我不知道该给他怎样的事件了
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="../../common/public_function.asp" -->
<!--#include file="../../common/menuinc.asp"-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script language="javascript">
var xmlHttp;
var completeDiv;
var inputField;
var nameTable;
var nameTableBody;
var flag=false;

function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}

function setflag(){
flag = true;
}

function DisSelect()
{
if(flag==false)
document.getElementById("popup").style.display="none";
}

function initVars() {
inputField = document.getElementById("frmchangshang");
nameTable = document.getElementById("name_table");
completeDiv = document.getElementById("popup");
nameTableBody = document.getElementById("name_table_body");
document.getElementById("popup").style.display="block";
}

function findNames() {
initVars();
if (inputField.value.length > 0)
{
createXMLHttpRequest();
var url = "search1.asp?names=" + inputField.value;
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = callback;
xmlHttp.send(null);
}
else
{
clearNames();
}
}

function callback() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200)
{
try
{
var name = xmlHttp.responseXML.getElementsByTagName("name")[0].firstChild.data;
var userid = xmlHttp.responseXML.getElementsByTagName("userid")[0].firstChild.data;
}
catch(e)
{
document.getElementById("popup").style.display="none";
clearNames();
}
setNames(xmlHttp.responseXML.getElementsByTagName("content"));
}
else if (xmlHttp.status == 204)
{
clearNames();
}
}
}

function setNames(the_names) {
clearNames();
var size = the_names.length;
setOffsets();
var row,cell,spans;
for (var i = 0; i < size; i++) {
//var nextNode = the_names[i].firstChild.data;
var e = the_names[i];
//取得子节点内容,重新装载为数组
var nextNode=e.getElementsByTagName("name")[0].firstChild.data;
//创建tr,td,span元素
row =document.createElement("tr");
cell =document.createElement("td");
//spans=document.createElement("span");
//设置cell属性
cell.onmouseout = function() {this.className='mouseOver'; flag=false;};
cell.onmouseover = function() {this.className='mouseOut'; flag=true;};
cell.setAttribute("bgcolor","#FFFAFA");
cell.setAttribute("border","0");
//cell.setAttribute("onmouseover","setflag()");
cell.onclick = function() { populateName(this); };
//将nextNode添加到td
var txtName = document.createTextNode(nextNode);
cell.appendChild(txtName);
//装载隐藏数据到span元素
row.appendChild(cell);
nameTableBody.appendChild(row);
}
}

function setOffsets() {
var end = inputField.offsetWidth;
var left = calculateOffsetLeft(inputField);
var top = calculateOffsetTop(inputField) + inputField.offsetHeight;

completeDiv.style.border = "black 1px solid";
completeDiv.style.left = left + "px";
completeDiv.style.top = top + "px";
nameTable.style.width="400px";
}

function calculateOffsetLeft(field) {
return calculateOffset(field, "offsetLeft");
}

function calculateOffsetTop(field) {
return calculateOffset(field, "offsetTop");
}

function calculateOffset(field, attr) {
var offset = 0;
while(field) {
offset += field[attr];
field = field.offsetParent;
}
return offset;
}

function populateName(cell) {
//填充数据到web页面,cell---->td对象
inputField.value = cell.firstChild.nodeValue;
clearNames();
}
//清除列表数组
function clearNames() {
var ind = nameTableBody.childNodes.length;
for (var i = ind - 1; i >= 0 ; i--) {
nameTableBody.removeChild(nameTableBody.childNodes[i]);
}
completeDiv.style.border = "none";
}

function getpara(){
with(document.form1){
if(frmchangshang.value.length==0){return;}
test.value=frmchangshang.value.split(">")[1];
var id=test.value;
}
//ajax
var x=createXMLHTTP();
var url='Ajaxcode.asp?id='+id+'&s='+ new Date().getTime();
x.open('GET',url,true)
x.onreadychange=homel(x);
x.send(null)

}
function homel(x){
if (x.readyState==4){
if(x.status==200||x.status==0){
var s=x.responseText;
document.form1.test.value=s;
x=null;
}
}
}
</script>

</head>

<body>
<form name="form1">
<input name="frmchangshang" class="txtBoxStyle2" id="frmchangshang" style="width:400px;" onBlur="DisSelect();" onKeyUp="findNames();" size="50" maxlength="150" value="<%=items%>" onClick="getpara()">提示:输入关键字,程序自动从库中匹配您要找的记录,如果不存在自行填写</span> </span>
<div style="position:absolute;top:0;left:0;" id="popup">
<table id="name_table" bgcolor="#FFFAFA" border="0" cellspacing="0" cellpadding="0">
<tbody id="name_table_body"></tbody>
</table>
</div>
<input type="text" name="test" id="test">
</form>
</body>
</html>
linuxlsx 2009-09-14
  • 打赏
  • 举报
回复
都解决了 进来凑个热闹

那个text1的id可以得到 然后再得到文本内容 再进行一下分割就好了
homel 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 toury 的回复:]
引用 6 楼 homel 的回复:
“宁和明白人吵架,不和糊涂人说话”,可能刚才有点冲动吧,不好意思了
没办法,可能自己也不是一个“省油的灯”吧

算了,小事一桩。2楼也就是开个玩笑吧。
我记得你以前用过AJAX的吧...记不清了,呵呵
[/Quote]
用过一两次,也就是依葫芦画瓢
现在要静下心来做事了
toury 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 homel 的回复:]
“宁和明白人吵架,不和糊涂人说话”,可能刚才有点冲动吧,不好意思了
没办法,可能自己也不是一个“省油的灯”吧
[/Quote]
算了,小事一桩。2楼也就是开个玩笑吧。
我记得你以前用过AJAX的吧...记不清了,呵呵
homel 2009-09-14
  • 打赏
  • 举报
回复
“宁和明白人吵架,不和糊涂人说话”,可能刚才有点冲动吧,不好意思了
没办法,可能自己也不是一个“省油的灯”吧
toury 2009-09-14
  • 打赏
  • 举报
回复
homel兄弟,你3楼的回帖大可不必。我要是你的话只会视而不见听而不闻的。听说过吗?“宁和明白人吵架,不和糊涂人说话”,呵呵。
toury 2009-09-14
  • 打赏
  • 举报
回复

function creatXMLHTTP(){
var xmlHttp=null;
try{xmlHttp=new XMLHttpRequest();}
catch (MSIEx){
try{xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
catch (e){
try{xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}
catch(e){alert('您的浏览器不支持AJAX!');}
}
}
return xmlHttp;
}

function getpara(){
with(document.form1){
if(text1.value.length==0){return;}
text2.value=text1.value.split(">")[0];
var id=text2.value;
}
//ajax
var x=createXMLHTTP();
var url='你的后台处理文件.asp?id='+id+'&s='+ new Date().getTime();
x.open('GET',url,true)
x.onreadychange=homel(x);
x.send(null)

}
function homel(x){
if (x.readyState==4){
if(x.status==200||x.status==0){
var s=x.responseText;
//处理你的返回数据。。。。。
x=null;
}
}
}
homel 2009-09-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 li1229363 的回复:]
真复杂……

第一个要求必须有ajax的配合。不然就全是瞎扯了。

第二个比较简单,把第一个输入的内容作为参数,传递给一个零时的字符串str。

然后以str的操作的基准,对text1的value做操作,去掉str中的内容。而然赋值给text2

估计满足不了你的要求。

说真话,你这东西做好了能得到多少钱?
[/Quote]
回复楼上的,第一个功能我已经按照网上搜索的方法做好了,只是问问第二个问题的思路
还有就是:说真话,你这东西做好了能得到多少钱?难道你眼中的知识就只是
money?你来论坛的目的只是为了赚取积分吗?也许每个人都有来论坛的目的,但是你的...
我的问题你可以不回答...
li1229363 2009-09-14
  • 打赏
  • 举报
回复
真复杂……

第一个要求必须有ajax的配合。不然就全是瞎扯了。

第二个比较简单,把第一个输入的内容作为参数,传递给一个零时的字符串str。

然后以str的操作的基准,对text1的value做操作,去掉str中的内容。而然赋值给text2

估计满足不了你的要求。

说真话,你这东西做好了能得到多少钱?
阿_布 2009-09-14
  • 打赏
  • 举报
回复
用ajax做吧!
homel 2009-09-14
  • 打赏
  • 举报
回复
function setNames(the_names) {
clearNames();
var size = the_names.length;
setOffsets();
var row,cell,spans;
for (var i = 0; i < size; i++) {
//var nextNode = the_names[i].firstChild.data;
var e = the_names[i];
//取得子节点内容,重新装载为数组
var nextNode=e.getElementsByTagName("name")[0].firstChild.data;
//创建tr,td,span元素
row =document.createElement("tr");
cell =document.createElement("td");
//spans=document.createElement("span");
//设置cell属性
cell.onmouseout = function() {this.className='mouseOver'; flag=false;};
cell.onmouseover = function() {this.className='mouseOut'; flag=true;};
cell.setAttribute("bgcolor","#FFFAFA");
cell.setAttribute("border","0");
//cell.setAttribute("onmouseover","setflag()");
cell.onclick = function() { populateName(this);getpara() }; //放在这里好像可行
//将nextNode添加到td
var txtName = document.createTextNode(nextNode);
cell.appendChild(txtName);
//装载隐藏数据到span元素
row.appendChild(cell);
nameTableBody.appendChild(row);
}
}
homel 2009-09-14
  • 打赏
  • 举报
回复
我觉得不应该在第一次回调的时候调用getpara这个函数
而应该在解析xml文件的时候来做,
就是在

function setNames(the_names) {
clearNames();
var size = the_names.length;
setOffsets();
var row,cell,spans;
for (var i = 0; i < size; i++) {
//var nextNode = the_names[i].firstChild.data;
var e = the_names[i];
//取得子节点内容,重新装载为数组
var nextNode=e.getElementsByTagName("name")[0].firstChild.data;
//创建tr,td,span元素
row =document.createElement("tr");
cell =document.createElement("td");
//spans=document.createElement("span");
//设置cell属性
cell.onmouseout = function() {this.className='mouseOver'; flag=false;};
cell.onmouseover = function() {this.className='mouseOut'; flag=true;};
cell.setAttribute("bgcolor","#FFFAFA");
cell.setAttribute("border","0");
//cell.setAttribute("onmouseover","setflag()");
cell.onclick = function() { populateName(this); };
//将nextNode添加到td
var txtName = document.createTextNode(nextNode);
cell.appendChild(txtName);
//装载隐藏数据到span元素
row.appendChild(cell);
nameTableBody.appendChild(row);
}
}
在这个函数中调用,不知道对不对?
加载更多回复(7)

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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