一、onChange事件只有在值改变时才可触发,所以必须在每一次选择时(尤其第一次)保证选择的值是改变的!
所以<select name="inv_payee" id="ECS_INVPAYEE" οnchange="show_payee();" style="border:1px solid #ccc;"> <option value="个人" selected >个人</option> //在这要选定一个默认的值 "selected"
<option value="单位">单位</option> </select>
这样在选择第二个时,值就会变即可触发onChange;
二、我们用Select的onchange事件时,常会遇到这样一个问题,那就是连续选相同一项时,不触发onchange事件.select的onchange事件就是这样子的.你得有Change(改变),才能触发该事件....<select name=sel οnchange="bao(this.options[this.options.selectedIndex].value)"><option value="">请选择<option value="1">Item 1<option value="2">Item 2<option value="3">Item 3</select><script>function bao(s){txt.value =s;//选择后,让第一项被选中,这样,就有Change啦.document.all.sel.options[0].selected=true;}</script><textarea id=txt></textarea>三、
js中onchange事件是在客户端改变输入控件的值,比如一个textbox,会出发的一个事件。但是如果在js代码中改变一个textbox的value,而不是通过键盘输入改变一个textbox值的话,是不会出发onchange事件的。
那么,如何在js代码模式通过代码触发textbox控件的onchange事件呢,经过查阅资料,发现js提供了一个方法,可以触发控件的应该是所有事件。object.fireEvent()方法,使用方法如 object.fireEvent('onchange'),即可触发控件的onchange事件。
同理,js中使用fireEvent方法还可以触发其他的空间事件。
触发onchange事件的问题,并不是值一旦更改就会触发onchange事件。对于onBlur和onFocus可以直接调用object.Blur()和object.Focus(),但javascript中没有object.Change事件。
1.ie 处理1
document.getElementByIdx_x('hid_provider_id').attachEvent("onpropertychange",function(){alert('gggg');});
2.object.fireEvent()可以触发事件,如触发onchange事件则是object.fireEvent('onchange'),以此类推。
例: <SELECT id=select1 οnchange="alert(this.value)"> <OPTION value="0">0</OPTION> <OPTION value="1">1</OPTION> <OPTION value="2">2</OPTION> </SELECT> <INPUT type="text" id=text1 name=text1> <INPUT type="button" value="Button" οnclick="select1.selectedIndex=text1.value"> 手动改变select的值,会触发onchange 脚本改变selectedIndex,不会触发onchange解决办法if (select1.fireEvent) select1.fireEvent("onchange") else select1.onchange()或<INPUT type="button" value="Button" οnclick="select1.selectedIndex=text1.value;select1.fireEvent('onchange')">程序,里因为程序里有多个action里并每个action有多个submit按钮事件,为了区别代码,同时页面隐藏按钮<select name="select" οnchange="document.getElementByIdx_x('seaoldsubmit').click();"><option value="0">查询条件</option>......</select><input type="submit" name="seaoldsubmit" value="确定" style="display:none">if(submitcheck('seaoldsubmit'))
四、最近项目中遇到一个问题,要用js去触发onchange事件。上网找了一些资料,IE上有onpropertychang事件,可以用js去触发这个事件,但是Firefox不支持这个事件,然后在firefox中去绑定一个input事件。但是这是无效的啊,仍然不会去触发onchange事件。最后只能用未解决方案了!用js修改值的时候,在js执行修改完之后去执行onchange事件,不过这样即使这个值不改变的话也会调用这个方法。function handle(){document.getElementByIdx_x('msg').innerHTML='输入的文字长度为:'+document.getElementByIdx_x('txt').value.length;}//firefox下检测状态改变只能用oninput,且需要用addEventListener来注册事件。if(/msie/i.test(navigator.userAgent)) //ie浏览器{document.getElementByIdx_x('txt').onpropertychange=handle}else{//非ie浏览器,比如Firefoxdocument.getElementByIdx_x('txt').addEventListener("input",handle,false);}</script></head><body id="mybody" class="index"><div id="msg"></div><input id='txt' value="" />以上为测试代码。
转载于:https://www.cnblogs.com/zhanghongqiang/p/4097513.html
相关资源:数据结构—成绩单生成器