28,391
社区成员
发帖
与我相关
我的任务
分享
document.DemoForm.Category.add(new Option(cate[key].shiNo,cate[key].shiName));
function handle(rv){
alert("1:"+rv); //这里是服务器返回的内容
eval(rv);
alert("2:"+cate.length);
for(var key in cate){
alert("3:"+cate[key]);
document.DemoForm.Category.add(new Option(cate[key].shiNo,cate[key].shiName));
}
}
function getRoute(dic,value,mode){
var strRoute,intDepth=-1;
for(var i=dic.length-1;i>-1;i--){
if(intDepth>-1){
if(intDepth==0) return(strRoute);
if(dic[i][0]<intDepth){
strRoute=i+","+strRoute;
intDepth--;
}
}else{
if(dic[i][mode]==value){
strRoute=i.toString();
intDepth=dic[i][0];
}
}
}
return(strRoute);
}
function getRoutes(dic,route,mode){
var strRoute="",depth=0;
var arrRoute=route.split(",");
var intDepth=arrRoute.length-1;
for(var i=0;i<dic.length;i++){
if(dic[i][mode]==arrRoute[depth]){
if(strRoute)strRoute+=","+i;
else strRoute=i.toString();
if(depth==intDepth)return(strRoute);
else depth++;
}
}
return(strRoute);
}
function drawSelect(obj,dicName){
var argv=drawSelect.arguments;
var argc=drawSelect.arguments.length;
var mode=(argc>2)?argv[2]:0;
var name=(argc>3)?argv[3]:"";
var value=(argc>4)?argv[4]:"";
var tips=(argc>5)?argv[5]:"";
var prop=(argc>6)?argv[6]:"";
var dic=eval(dicName),objValue="";
switch(mode){
case 0:value=getRoute(dic,value,2);mode=5;break;
case 1:value=getRoutes(dic,value,1);mode=6;break;
case 2:value=getRoute(dic,value,1);mode=7;break;
case 3:value=getRoutes(dic,value,2);mode=8;break;
}
var strRoute="",arrRoute=new Array();
if(value)arrRoute=value.split(",");
var strHtml="",arrHtml=new Array();
var intDepth,strTitle,strValue,j,selDepth=0;
for(var i=0;i<dic.length;i++){
intDepth=dic[i][0];strTitle=dic[i][1];strValue=dic[i][2];
if(intDepth==selDepth){
if(arrHtml[selDepth]==null){
arrHtml[selDepth]="<select onChange={drawSelect(this.parentNode,\""+dicName+"\","+mode+",\""+name+"\",this.value,\""+tips+"\",\""+prop+"\")} "+prop+">";
if(tips){
if(selDepth)arrHtml[selDepth]+="<option value=\""+strRoute+"\">"+tips+"</option>";
else arrHtml[selDepth]+="<option value=\"\">"+tips+"</option>";
if(arrRoute[selDepth]==null)arrRoute[selDepth]=-1;
}else if(arrRoute[selDepth]==null)arrRoute[selDepth]=i;
}
if(i==arrRoute[selDepth]){
arrHtml[selDepth]+="<option value=\""+strRoute+i.toString()+"\" selected>"+strTitle+"</option>";
selDepth++;
strRoute+=i.toString()+",";
switch(mode){
case 5:objValue=strValue;break;
case 6:if(objValue)objValue+=","+strTitle;else objValue=strTitle;break;
case 7:objValue=strTitle;break;
case 8:if(objValue)objValue+=","+strValue;else objValue=strValue;break;
}
}else{
arrHtml[selDepth]+="<option value=\""+strRoute+i.toString()+"\">"+strTitle+"</option>";
}
}else if(intDepth<selDepth){
selDepth=intDepth;
strRoute="";
for(j=0;j<selDepth;j++)strRoute+=arrRoute[j]+",";
arrHtml[selDepth]+="<option value=\""+strRoute+i.toString()+"\">"+strTitle+"</option>";
}
}
for(i=0;i<arrHtml.length;i++){
strHtml+=arrHtml[i]+"</select>";
}
strHtml+="<input type=\"hidden\" value=\""+objValue+"\" name=\""+name+"\" id=\""+name+"\">";
if(obj==null)document.write("<span>"+strHtml+"</span>");
else obj.innerHTML=strHtml;
}
<html>
<head>
<script language="javascript" type="text/javascript" src="ajax.js"></script>
<script language="javascript" type="text/javascript">
//<![CDATA[
function getCategory(keyword){
new Ajax("get","http://localhost:81/getCategory.html","keyword="+keyword,"text","handle");
}
function handle(rv){
eval(rv);
document.DemoForm.Category.options.length=0;
for(var key in cate){
document.DemoForm.Category.add(new Option(cate[key].text,cate[key].id));
}
}
//]]>
</script>
</head>
<body>
<form name="DemoForm" id="DemoForm">
<ul>
<li>关键字:<input type="text" name="keyword" id="keyword" onclick="getCategory(this.value)" />
<select id="Category" name="Category">
<option value="">类别</option>
</select>
</li>
</ul>
</form>
</body>
</html>
function Ajax(method,url,param,ft,fun)
{
this.xhr=this.getxhr();
this.docType=ft;
switch(method.toLowerCase())
{
case "post":this.post(url,param);break;
case "get":this.get(url,param);break;
}
this._readystate=null;
this.fun=fun;
}
Ajax.prototype.getxhr=function()
{
var ms=['Microsoft.XMLHttp','MSXML.XMLHttp','MSXML2.XMLHttp','MSXML3.XMLHttp'];
if(window.ActiveXObject)
{
try{
for(var i=0;i<ms.length;i++)
{
return new ActiveXObject(ms[i]);
}
}
catch(e){}
}
else if(window.XMLHttpRequest)
{
var req=new XMLHttpRequest();
if(req.overrideMimeType)
{
req.overrideMimeType("text/xml");
}
}
return req;
}
Ajax.prototype.post=function(url,param)
{
var rc=Math.round(Math.random()*999);
if(url.indexOf("?")>=0)
{
url+="&arnd="+rc;
}
else
{
url+="?arnd="+rc;
}
this.xhr.open("post",url,true);
var obj=this;
this.xhr.onreadystatechange=function(){obj.call_(obj)}
this.xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
this.xhr.send(param);
}
Ajax.prototype.get=function(url,param)
{
var rc=Math.round((Math.random()*999));
if(url.indexOf("?")>=0)
{
url+="&"+param+"&arnd="+rc;
}
else
{
url+="?"+param+"&arnd="+rc;
}
this.xhr.open("get",url,true);
var obj=this;
this.xhr.onreadystatechange=function(){obj.call_(obj)}
this.xhr.send(null);
}
Ajax.prototype.call_=function(req)
{
if(req.xhr.readystate==4)
{
if(req.xhr.status==200)
{
if(req.docType.toLowerCase()=="xml")
{
eval(req.fun+"(req.xhr.responseText)");
}
else
{
eval(req.fun+"(req.xhr.responseText)");
}
}
}
}
//prototype 方法
function $() {
var elements = new Array();
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
if (typeof element == 'string')
element = document.getElementById(element);
if (arguments.length == 1)
return element;
elements.push(element);
}
return elements;
}
var cate=[{id:'001',text:'ASUS'},{id:'002',text:'Beniq'},{id:'003',text:'IBM'},{id:'004',text:'联想'}];
<%@language="vbscript" pagecode="65001" %>
<!--#include file="DBConn.asp"-->
var cate=[
<%
dim str
str=""
connect
set rs=conn.execute("select id,text from category where parentId='"&&"'")
while not rs.eof
str=str&"{id:"""&rs("id")&""",text:"""&rs("text")&"""},"
rs.moveNext
wend
disconnect
str=left(str,len(str)-1)
response.write str
%>
];