<select onchange="fun(this)">
<option value='0'>---</option>
<option value='1'>绑定</option>
<option value='2'>解除</option>
</select>
<INPUT TYPE="text" id="otxt" value="">
<SCRIPT LANGUAGE="JavaScript">
<!--
function fun(osel){
var otxt = document.getElementById("otxt");
if(osel.options[osel.selectedIndex].text=='绑定'){
otxt.attachEvent("onfocus", Event);
otxt.value="绑定了FOCU事件请点击";
}else if(osel.options[osel.selectedIndex].text=='解除'){
otxt.detachEvent("onfocus", Event);
otxt.value="解除了FOCU事件请点击";
}else{
alert('请选择');
otxt.value="";
}
}
function Event(){
alert("ok");

}
//-->
</SCRIPT>

解决方案 »

  1.   

    我试了楼上的方法,效果还是不理想。所以我换了个思路。
    将原来的时间直接在input中onclick写好如:<input name="otxt" type="text"  onClick="setday();" > 当select选择解除的时候,如何通过JS将input的onclick事件取消掉?
      

  2.   

    我晕 我都给你写了阿??
    otxt.detachEvent("onfocus", Event);这就是解除事件阿
    我写得那个哪块不满足楼主的需求 我给你改
      

  3.   

    取消事件直接 otxt.onclick=null又或者那个什么detachEvent
      

  4.   

    我把你写的代码修改了一下    function fun(osel){
            var otxt = document.getElementById("otxt");
            if(osel.options[osel.selectedIndex].text=='绑定'){
                //otxt.attachEvent("onclick", Event);
                //otxt.value="绑定了FOCU事件请点击";
            }else if(osel.options[osel.selectedIndex].text=='解除'){
                otxt.detachEvent("onclick", Event); // 未解除事件
                otxt.value="解除了FOCU事件请点击";
            }else{
                alert('请选择');
                otxt.value="";
            }
        }
        function Event(){
            alert("ok");
        
        }
    <INPUT TYPE="text" id="otxt" value="" onclick="Event();">
    我要的效果是,当你选择【解除】的时候,onclick事件失效。
      

  5.   

    你那时自己人工绑定的要把otxt.detachEvent("onclick", Event); 换成 otxt.onclick = "";我给你写的是 动态绑定 动态解除 是对应的
      

  6.   

    不过后面又带了个副作用,如果你先执行了【解除】后,当你重新选【绑定】时又没法执行事件,应该和我调用的setday()函数有关。不知道在不改变setday()函数的情况下,有没有好的解决方法。谢谢!