2009年10月27日星期二

Raise onChange in IE and FF

发现 fireEvent 时,确实兴奋了一把~~,终于找到可以手动触发 onchange 事件的呢~
试了下,老问题,又是 IE 和 FF 不兼容的问题...
还好,找到了解决的方法~~~
FF下,用如下的就可以搞定啦~
[js]
var e = document.createEvent('HTMLEvents');
e.initEvent('change', false, false);
document.form_test.test_text.dispatchEvent(e);
[/js]

测试代码如下:
[html]
<script type="text/javascript">
function justify_browser() {
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;

if (Sys.ie) return 1;
if (Sys.firefox) return 2;
if (Sys.chrome) return 3;
if (Sys.opera) return 4;
if (Sys.safari) return 5;
}


function button_onClick() {
document.form_test.test_text.value=parseInt(document.form_test.test_text.value) + 1;

browser_flag = justify_browser();

if (browser_flag == 1) {
document.form_test.test_text.fireEvent('onchange');
} else if (browser_flag == 2) {
var e = document.createEvent('HTMLEvents');
e.initEvent('change', false, false);
document.form_test.test_text.dispatchEvent(e);
}
}
[/js]
<form name="form_test" action="">
<input type="text" name="test_text"
onchange="alert(document.form_test.test_text.value);" readonly="readonly" value="0" />
<input type="button" onclick="button_onClick();" />
[/html]

没有评论 :

发表评论