使input组件的绝对位置覆盖select组件的选择框,当select的状态发生改变的时候,使用this.parentNode.nextSibling.value=this.value把select所选择的值赋给inputgetcity()是Ajax实现的 取到公司下的名字.
运行程序后 ,当我选择下拉框值的时候, input里没有值
-----------------------------------------------------------------------
<th>公司</th>
<td>
    
<div style="position:relative;">
<span style="margin-left:100px;width:18px;overflow:hidden;">
            
<select name="fgsid" id="company" onchange="getCity()" style="width:118px;margin-left:-100px" onchange="this.parentNode.nextSibling.value=this.value">
<option value="">请选择</option>   
<c:forEach items="${getFGS}" var="hashMap">   
<option value="<c:out value='${hashMap.key}' />"><c:out value="${hashMap.value}" /></option>   
</c:forEach>  
</select>
        
</span>
<input name="box" style="width:100px;position:absolute;left:0px;">
        
</div>

解决方案 »

  1.   

    写法都是错误的,不能同时出现两个onchange,实际上只执行了一个.
    我还是不太明白楼主的意思.
    使用this.options[this.selectedIndex].value来获取当前选择的值,传给input不就行了么.
      

  2.   

    还没确切的理解你的意思! 如果说你要用同一事件实现两个功能,那你可以尝试:
     onchange="this.parentNode.nextSibling.value=this.value; getCity();"
    这样的写法! 一个组件不能够用绑定两个方法,或者说自己封装下组件;
      

  3.   


    我也是没办法
    这个onChange="getcity()"是必须要的
    因为有第二个onChange的存在 所以没有执行this.options[this.selectedIndex].value来获取当前选择的值其实现在这个不重要 
    换句话说吧
    这样在select里面 执行2个onchange()时间
      

  4.   

    var addEvent(el,e,callback) {
    if(el.attachEvent) {//for IE
    el.attachEvent("on"+e,callback);
    } else{
    el.addEventListener(e,callback,false);
    }
    }addEvent(selecobj,"change",function() {
    alert("事件1");
    });
    addEvent(selecobj,"change",function() {
    alert("事件2");
    });
      

  5.   

    onchange="this.parentNode.nextSibling.value=this.value; getCity();"不行
      

  6.   

    var selecobj=document.getElementById("company");
      

  7.   

     楼主,你是想写一个CombBox组件吧?
      

  8.   

    那就使用4楼的用addEventListener或attachEvent来给对象加事件,可以同时加入多个相同名称的事件.
      

  9.   

    你写错了一点点:<input type="button" id="tt" value="tttttttttttttttt"/>
    <script>
    var addEvent = function(el,e,callback){
        if(el.attachEvent) {//for IE
            el.attachEvent("on"+e,callback);
        } else{
            el.addEventListener(e,callback,false);
        }
    }
    var selecobj = document.getElementById('tt');
    addEvent(selecobj,"change",function() {
        alert("事件1");
    });
    addEvent(selecobj,"change",function() {
        alert("事件2");
    });
    </script>
      

  10.   


    我中午测试用这个做一下谢谢你 sohighthesky
      

  11.   


    <input type="button" id="tt" value="tttttttttttttttt"/>
    <script>
    var addEvent = function(el,e,callback){
        if(el.attachEvent) {//for IE
            el.attachEvent("on"+e,callback);
        } else{
            el.addEventListener(e,callback,false);
        }
    }
    var selecobj = document.getElementById('tt');
    addEvent(selecobj,"click",function() {
        alert("事件1");
    });
    addEvent(selecobj,"click",function() {
        alert("事件2");
    });
    </script>
      

  12.   

    其实我的做法很简单
    onchange="getCity()" 因为是Ajax级联的方法 所以不好改做一个可输入的下拉框 onchange="getCity()"获取城市名字
    当我选择下拉框值的时候 我还要把所选的值赋给文本框 所以就存在了2个onChange()事件
      

  13.   

    或者说
    一个select 里面 用一个onChange()事件处理2件事情 也可以 
    :)
      

  14.   


    <select id="tt"><option>aaaaaaa</option><option>b</option><option>c</option></select>
    <label id="lb1"></label><br/>
    <label id="lb2"></label>
    <script>
    var addEvent = function(el,e,callback){
        if(el.attachEvent) {//for IE
            el.attachEvent("on"+e,callback);
        } else{
            el.addEventListener(e,callback,false);
        }
    }
    var selecobj = document.getElementById('tt');
    addEvent(selecobj,"change",function() {
       document.getElementById("lb1").innerHTML="执行事件1 当前日期为:"+new Date().toLocaleDateString();
    });
    addEvent(selecobj,"change",function() {
         document.getElementById("lb2").innerHTML="执行事件2 当前时间:"+new Date().toLocaleTimeString();
    });
    </script>
      

  15.   

    attachEvent、addEventListener可以添加多个事件
      

  16.   

    <label id="lb1"></label><br/>
    <label id="lb2"></label>这有什么用?
      

  17.   

    <select onchange="getCity(); this.parentNode.nextSibling.value=this.value;" ...>
    ...
    </select>
      

  18.   

    注意ttachEvent 和addEventListener它们执行的事件顺序不一样