我正在寻找一种方法,当用户触发onblur事件时左对齐文本输入框的内容。我已经看到用onblur =“this.value = this.value”解决这个问题,但这在IE中不起作用。
澄清:当用户键入超出文本框宽度然后离开焦点时,Internet Explorer中会出现此问题。在Chrome和Firefox中,文本会自动左对齐,但这不会发生在IE中。
由于请求,我附上了代码(在IE中查看):
<input type="text" />
http://jsfiddle.net/t3hjonneh/FZJjW/
文字字段:
打字后:
Blur之后:
应该如何看待:
答案 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
更改课程作为额外的奖励,您也可以为该课程设置其他属性。
虽然我支持发布相关代码的概念