Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE8以编程方式更改文本框值时触发更改事件_Javascript_Jquery_Internet Explorer 8 - Fatal编程技术网

Javascript IE8以编程方式更改文本框值时触发更改事件

Javascript IE8以编程方式更改文本框值时触发更改事件,javascript,jquery,internet-explorer-8,Javascript,Jquery,Internet Explorer 8,我有一些IE8 javascript问题(joy) 基本上,我需要将某个文本框中的任何负数项转换为正值。我想我会这样做: $('input[type="text"]').live('change', function () { var number = $(this).val(); if (number < 0) { $(this).val(-number); } }); 不幸的是,在IE8中,当文本框的值更改时(即在文本框中输入-23),

我有一些IE8 javascript问题(joy)

基本上,我需要将某个文本框中的任何负数项转换为正值。我想我会这样做:

$('input[type="text"]').live('change', function () {
    var number = $(this).val();
    if (number < 0)
    {
        $(this).val(-number);
    }
});
不幸的是,在IE8中,当文本框的值更改时(即在文本框中输入-23),更改事件会触发两次,而模糊事件根本不会触发

其他现代浏览器不这样做

  • 为什么更改事件被触发两次
  • 为什么模糊事件没有触发
  • 我怎么修理它

  • 转到此处查看发生的情况:

    当您将表单元素的
    属性设置为不同的值时,IE8中将触发
    change
    事件,因此此行

    $(this).val(-number);
    
    再次触发更改事件。如果我将代码更改为

    $('input[type="text"]').change( function () {
        var number = $(this).val();
        if (number < 0)
        {
            $(this).val(-number);
        }
        alert('change');
    
    });
    
    $('input[type="text"]').blur(function () {
        alert('blur');
    })
    
    $('input[type=“text”])。更改(函数(){
    var number=$(this.val();
    如果(数字<0)
    {
    $(this.val(-number);
    }
    警报(“变更”);
    });
    $('input[type=“text”]”)。模糊(函数(){
    警报(“模糊”);
    })
    

    它起作用了,这让我觉得当更改和模糊事件与
    .live
    绑定时发生了一些事情。很抱歉,我知道的解决方案不多,也许有人读了这篇文章后会想出一些想法。

    很遗憾JSFIDLE在IE中不能正常工作,但我只看到一个更改事件在那里触发。UPD:对不起,我忘了输入negative。事实上,即使其中一个事件与
    live
    $('input[type="text"]').change( function () {
        var number = $(this).val();
        if (number < 0)
        {
            $(this).val(-number);
        }
        alert('change');
    
    });
    
    $('input[type="text"]').blur(function () {
        alert('blur');
    })