当有其他事件时,onChange事件不能在IE9 / 10上运行吗?

时间:2013-06-28 20:21:37

标签: javascript internet-explorer onchange onkeyup

我正面临着这种令人尴尬的局面。首先,我现在正在使用IE 10,但是在IE9上也检测到了这个问题。我有这个输入字段,我需要2个事件来处理它: - onKeyUp,检查字段的值是否为数字;和 - onChange,输入正确的数字时运行一些JS

如果单独指定,它们可以正常工作。但是,每当我在输入字段上设置这两个事件时,onChange事件都不会触发,无论如何。此页面上的所有其他JS都已被剥离以防止干扰。

以下是onKeyUp的JS代码:

    <script>
    function CampoNumerico(campo){
                    var valor = campo.value;
        var novoValor = '';
        var pontoPosicao = '';
                    if (isNaN(valor)){ // se nao for numero, devemos retornar o campo ao ultimo valor valido
                            alert(valor + " nao eh um numero valido");
                            novoValor = campo.defaultValue;
                    }
                    else{ //sendo um numero, buscamos a posicao de sua eventual virgula
            valor = valor.split('');
                            for (var i = 0; i < valor.length; i++){
                                    if (valor[i] == '.' && pontoPosicao == ''){
                                            pontoPosicao = i;
                                    }
                            }

            // se nao houver ponto, o novo valor do campo sera igual ao valor de entrada da funcao
            if ( pontoPosicao == ''){
                                    for (var i = 0; i < valor.length; i++){
                                            novoValor += valor[i];
                                    }

            }
            else{ // se houver o ponto, registramos o novo valor igual ao valor de entrada, ate o limite de casas decimais
                var tamanho = ((pontoPosicao + 3) < valor.length)? pontoPosicao + 3 : valor.length;
                for (var i = 0; i < tamanho; i++){
                    novoValor += valor[i];
                }
            }
                            if (pontoPosicao != '' && pontoPosicao < (valor.length - 3)){ // se houver um ponto e mais de 2 casas decimais, alertamos o usario e desconsideramos as casas adicionais
                                    alert("Aviso: " + campo.value + " tem mais de 2 casas decimais; serão consideradas apenas as primeiras casas - " + novoValor);
                            }
                    }
        // terminamos por atualizar o valor do campo
                    campo.value = novoValor;
            } // fim da CampoNumerico

</script>

以下是我正在尝试将此脚本分配到的字段:

<input type='text' name='campo' value='0'  onchange='alert("1")' onkeyup='CampoNumerico(this)'>

此时我只想在触发onchange时提醒“1”,但我甚至无法做这个简单的动作......

有趣的是,这种编码适用于其他浏览器 - Chrome&amp; Firefox浏览器。任何人都可以帮我解决这个令人尴尬的局面吗?提前感谢任何想法。

编辑 - 输入字段现在可单独显示

0 个答案:

没有答案