function Edit1Change()
{
alert("dd");
}
<form action="#" name="g">
<input name="Edit1" style="width:260" type="text" onchange="return Edit1Change();">
</input>
</form>当我改变input值的时候,必需得点一下空白处,才能触发Edit1Change()事件,请问为什么?有什么办法当input值改变的时候就触发呢?
{
alert("dd");
}
<form action="#" name="g">
<input name="Edit1" style="width:260" type="text" onchange="return Edit1Change();">
</input>
</form>当我改变input值的时候,必需得点一下空白处,才能触发Edit1Change()事件,请问为什么?有什么办法当input值改变的时候就触发呢?
采用oninput,只是键盘输入改变才会出发,如果是JS改变不会触发。
最好的办法是:获得焦点的时候,记住原来文本框内的内容,然后当失去焦点的时候,将记住的原始内容和现在的内容,进行比对,如果相同则认为没有发生变化,如果不相同,则认为发生了变化。
光用key的up。down事件的话,如果我用鼠标操作粘贴一段内容进去还是不触发事件的,嗯。。看来漏洞无法弥补啊
你就先凑合着吧,起码在IE下完全解决了。如下:
<input name="Edit1" style="width:260" type="text" oninput="return Edit1Change();" onpropertychange="return Edit1Change();">
onpropertychange 不被firefox所支持,如果想在firefox下正常使用,需要用oninput属性,且需要用addEventListener来注册事件。
<html>
<body>
<div>oninput测试</div>
<div id="testdiv"><input id='tx1' name="tx1" value="" /></div>
</body>
</html>
<script language="JavaScript">
<!--
function getOs(){//判断浏览器类型
var OsObject = "";
if(navigator.userAgent.indexOf("MSIE")>0) {
return "MSIE";
}
if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){
return "Firefox";
}
if(isSafari=navigator.userAgent.indexOf("Safari")>0) {
return "Safari";
}
if(isCamino=navigator.userAgent.indexOf("Camino")>0){
return "Camino";
}
if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0){
return "Gecko";
}
}
if(navigator.userAgent.indexOf("MSIE")>0){
document.getElementById('tx1').attachEvent("onpropertychange",txChange);
}else if(navigator.userAgent.indexOf("Firefox")>0){
document.getElementById('tx1').addEventListener("input",txChange2,false);
}
function txChange(){
alert("testie");
}
function txChange2(){
alert("testfirefox");
}
</script>本文来自: 脚本之家(http://www.jb51.net/) 详细出处参考:http://www.jb51.net/article/14654.htm本文来自: 脚本之家(http://www.jb51.net/) 详细出处参考:http://www.jb51.net/article/14654.htm
在近来的工作中,用到了attachEvent方法,该方法可以为某一事件附加其它的处理事件,有时候可能比较有用,这里将其基本用法总结一下。其语法可以查看《DHTML手册》,里面有详细的说明,这里贴一个例子,该例子来自互联网:document.getElementById("btn").onclick = method1;
document.getElementById("btn").onclick = method2;
document.getElementById("btn").onclick = method3;
如果这样写,那么将会只有medhot3被执行写成这样:
var btn1Obj = document.getElementById("btn1");
//object.attachEvent(event,function);
btn1Obj.attachEvent("onclick",method1);
btn1Obj.attachEvent("onclick",method2);
btn1Obj.attachEvent("onclick",method3);
执行顺序为method3->method2->method1如果是Mozilla系列,并不支持该方法,需要用到addEventListener
var btn1Obj = document.getElementById("btn1");
//element.addEventListener(type,listener,useCapture);
btn1Obj.addEventListener("click",method1,false);
btn1Obj.addEventListener("click",method2,false);
btn1Obj.addEventListener("click",method3,false);
执行顺序为method1->method2->method3