左对齐文本输入onblur(IE 8& 9)

时间:2013-02-07 15:48:03

标签: javascript html textinput

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

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

由于请求,我附上了代码(在IE中查看):

<input type="text" />

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

文字字段:

Text Field

打字后:

After Typing

Blur之后:

After Blur

应该如何看待:

How it should look

3 个答案:

答案 0 :(得分: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时会造成一些麻烦。

答案 1 :(得分: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 ??
            }
        });
});

答案 2 :(得分:0)

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

虽然我支持发布相关代码的概念