5

我正在寻找一种在用户触发 onblur 事件时左对齐文本输入框内容的方法。我已经看到提到用 onblur="this.value = this.value" 解决问题,但这在 IE 中不起作用。

澄清:当用户键入超出文本框宽度然后离开焦点时,Internet Explorer 中会出现此问题。在 Chrome 和 Firefox 中,文本会自动左对齐,但在 IE 中不会发生这种情况。

应要求,我附上了代码(在 IE 中查看):

<input type="text" />

http://jsfiddle.net/t3hjonneh/FZJjW/

文本域:

文本域

打字后:

打字后

模糊后:

模糊后

它应该看起来如何:

它应该是什么样子

4

3 回答 3

5

这与其说是一个正确的解决方案,不如说是一种技巧,但它以某种方式起作用:

function blurred(elem) {
    var range;
    // IE only, probably not the best check since it will run in other browsers
    // if they ever implement this feature
    if (elem.createTextRange) {
        range = elem.createTextRange();
        range.collapse(true);
        range.select();
    }
}

<input type="text" onchange="blurred(this);" />

注意使用onchange代替onblur。这是因为select()在使用时会引起一些麻烦onblur

于 2013-02-07T18:25:10.270 回答
1

这是我模拟的适用于所有主要浏览器的 jQuery 版本:

$(document).ready(function(){
        $('input[type=text]').change(function(){
            try{//select nothing but side-effect is that text left justifies
                if(/webkit/.test(navigator.userAgent.toLowerCase())){
                    return;//webkit browsers do it automatically
                } else if(this.createTextRange) { //ie
                    var r = this.createTextRange();
                    r.collapse(true);
                    r.select();
                } else if(typeof this.selectionStart !== "undefined") { //firefox
                    this.selectionStart = 0;
                    this.selectionEnd = 0;
                }
            } catch(err) {
            //?? nobody cares ??
            }
        });
});
于 2014-02-18T15:50:04.560 回答
0

我只是在该字段上设置一个类,然后在您的 html 中使用 onBlur 启动一个函数:例如onBlur="left()",然后在您的 javascript 中,您可以简单地更改该类.setAttribute作为额外的奖励,您还可以将该类的其他属性设置为出色地。

虽然我确实支持发布相关代码的想法

于 2013-02-07T15:59:19.287 回答