var Class = {
Create:function(){
return function(){
this.initialize.apply(this,arguments);
}
}
}
function $(objId){
return document.getElementById(objId);
}
var Selector = Class.Create();
Selector.prototype = {
initialize:function(source,target,url,onLoading){
this.source = $(source);
this.target = $(target);
this.url = url;
if(arguments.length > 3){
this.loadingAction = onLoading;
}
},
bind:function(){
var selector = this;
this.source.onchange = function(){
var value = this.options[this.selectedIndex].value;
selector.getAJAXResponse(selector.url,"value="+value);
}
},
getAJAXResponse:function(url,request){
var selector = this;
if(window.event){
var loader = new ActiveXObject("Microsoft.XMLHTTP");
}else{
var loader = new XMLHttpRequest();
}
loader.open("GET",url+"?"+encodeURI(request)+"&TimeStamp="+new Date().getTime(),true);
loader.onreadystatechange = function(){
if(loader.readystate == 1){
if(selector.loadingAction){
selector.loadingAction();
}
}
if(loader.readystate == 4){
selector.complete(loader.responseText);
}
}
loader.send();
},
complete:function(responseText){
//just like {names:[],values:[]}
this.target.options.length = 0;
eval("datas = " + responseText);
for(var i = 0; i < datas.names.length ; i ++){
this.target.options[i] = new Option(datas.names[i],datas.values[i]);
}
}
}
用法: new Selector("objectID1","objectID2","yoururl",function(){alert("test");}).bind();
萝卜原创