使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>
运行程序后 ,当我选择下拉框值的时候, 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>
我还是不太明白楼主的意思.
使用this.options[this.selectedIndex].value来获取当前选择的值,传给input不就行了么.
onchange="this.parentNode.nextSibling.value=this.value; getCity();"
这样的写法! 一个组件不能够用绑定两个方法,或者说自己封装下组件;
我也是没办法
这个onChange="getcity()"是必须要的
因为有第二个onChange的存在 所以没有执行this.options[this.selectedIndex].value来获取当前选择的值其实现在这个不重要
换句话说吧
这样在select里面 执行2个onchange()时间
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");
});
<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>
我中午测试用这个做一下谢谢你 sohighthesky
<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>
onchange="getCity()" 因为是Ajax级联的方法 所以不好改做一个可输入的下拉框 onchange="getCity()"获取城市名字
当我选择下拉框值的时候 我还要把所选的值赋给文本框 所以就存在了2个onChange()事件
一个select 里面 用一个onChange()事件处理2件事情 也可以
:)
<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>
<label id="lb2"></label>这有什么用?
...
</select>