10

我遇到了一些关于在右对齐输入字段中填充的 IE10 奇怪之处。

检查这个小提琴http://jsfiddle.net/fhWhn/

::-ms-clear, ::-ms-clear{
    display: none;
}

这将删除“IE10 图标”,但如果我想保留这些并保留我的填充,我该怎么办?是否有另一种更聪明的方法来保持 onblur 之后的填充?

4

5 回答 5

5

我遇到了同样的问题。要恢复填充,只需将文本框的值设置为模糊。

我的简单解决方案:

$("input[type='text']").blur(function (evt){
    var $element = $(this);
    $element.val($element.val());
});
于 2013-04-02T15:00:25.570 回答
5

一种可能的解决方法是在输入中使用样式direction: rtl;,这会将 移动×到元素的左侧。但是,使用从右到左的行为可能不适合您的情况。

于 2013-10-05T23:06:42.767 回答
0

编辑:埃里克的解决方案对我有用,而且更好,但我把这个答案留在这里,以防某些未来版本的 IE 需要不同的修复

新的 IE,新的 IE 特定的渲染问题......

我一直在调试相同的行为。到目前为止,我发现唯一有效的是:

  1. 从输入中移除焦点(即使明确设置每个元素的“padding-right”在它有焦点时也没有效果)
  2. 将 padding-right 值设置为与正确值不同的值(将其设置为正确值不会触发任何更改,可能是因为布局系统知道计算的 CSS 值没有更改,因此决定不需要重新绘制)
  3. 等待重新绘制(立即 - 或者甚至在 1 或 2 毫秒的超时后 - 再次将属性设置为正确的值不会导致任何更改,可能是因为没有按照上述进行重新绘制)
  4. 将属性设置为正确的值(例如使用$this.css("padding-right", ""),它会删除任何每个元素的值并允许计算的 CSS 值接管)。

然而,这当然是不可取的,因为它涉及当用户可能正在打字时从输入中移除焦点。

于 2013-01-11T11:36:06.627 回答
0

我认为 JustinStolle 的回答是最好的方法。

例子:

input[type="text"].field-al-right{
    text-align:right;
    direction:rtl;
}
于 2013-10-28T12:04:01.433 回答
-1

您是否尝试在您的 CSS 中添加“box-sizing”?

* {
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    padding: 0;
    margin: 0;
}   
于 2012-12-07T16:54:36.947 回答