0

我有一些输入,我在 keyup 上进行了验证,它工作得很好,除了在 IE7 中它会在每次击键时缩小输入。

我已经调试了代码,发现是 jQUery .addClass/.removeClass 导致了这种效果。

这只是一个普通的旧输入,没什么特别的。

有任何想法吗?

$('input#myId').bind('keyup blur',function(){
        var _this = $(this);          
        if(_this.val().match(/^[0-9()\-\+\ ]+$/i)== null){
            _this.addClass('errorColor');               
        }else{
            _this.removeClass('errorColor');               
        }
});

编辑:

我终于找到了答案!原来是 boxsizing.htc 脚本。此脚本动态转换填充、边距和边框以包含在元素高度和宽度内。每次我输入输入时,它都会尝试应用触发 onupdate 事件的类并刷新元素大小。在我的 CSS 中,我有点懒惰,并在 errorClass 规则中添加了重要声明,纯粹是为了确保它具有最高可能的特异性。正是这种重要性揭示了 boxsizing 代码中的一个小错误,因为它会递增地计算边框宽度(或者更简单地说,它不会从之前的计算中删除它)。

我会尽快举一个例子。

4

3 回答 3

1

可能jQuery与IE7中的问题无关。问题更可能是由于与errorColor类相关的 CSS。

于 2012-07-31T18:14:39.653 回答
0

没有更多数据,我的最佳猜测是:

a)该类未能被删除并继续累积在元素上。

b)这是一些 IE7 100% 宽度的怪异,尝试 99% 或自动,看看它是否有帮助。

于 2012-07-31T19:34:21.143 回答
0

它是 boxsizing.htc 脚本。不要在此脚本中使用 !important 声明,因为它在计算刷新时会增加值......因此会缩小输入

于 2015-02-18T12:21:16.930 回答