Raise onChange in IE and FF

发现 fireEvent 时,确实兴奋了一把~~,终于找到可以手动触发 onchange 事件的呢~
试了下,老问题,又是 IE 和 FF 不兼容的问题…
还好,找到了解决的方法~~~
FF下,用如下的就可以搞定啦~

var e = document.createEvent('HTMLEvents');
e.initEvent('change', false, false);
document.form_test.test_text.dispatchEvent(e);

测试代码如下:

<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();" />
Also tagged ,