我有一个要求:一个文本框最多可以包含50个字符,为实现这一点我给了preventDefault。
if (!(event.ctrlKey && (event.which == 65 || event.which == 86 || event.which == 67 || event.which == 88))
&& (!(event.shiftKey && (event.which == 35 || event.which == 36)))
&& (key != 8 && key != 37 && key != 39 && key != 46 && key != 36 && key != 35 && key != 33 && key != 34)) {
event.preventDefault();
}
但现在的要求是:当我们按ctrl + a然后按abc它应该从文本中取出所有内容并打印abc。
实现这个我写了这段代码 - >
var focusItem = $('<input type="text">');
function getSelText() {
var txt = '';
//IE
var focusItem = $('<input type="text">');
if (document.selection != undefined) {
focusItem.focus();
var sel = document.selection.createRange();
var rangeParent = sel.parentElement();
txt = sel.text;
if (!(event.ctrlKey && (event.which == 65 || event.which == 86 || event.which == 67 || event.which == 88))
&& (!(event.shiftKey && (event.which == 35 || event.which == 36)))
&& (key != 8 && key != 37 && key != 39 && key != 46 && key != 36 && key != 35 && key != 33 && key != 34)) {
//event.preventDefault();
if (txt.length > 0 && ((key >= 65 && key <= 90) || (key >= 48 && key <= 57) || (key >= 97 && key <= 122))) {
sel.text = String.fromCharCode(key).toLowerCase();
}
txt = sel.text;
}
}
return txt;
}
现在事情正在发挥作用但是..当我按下ctrl + a abc然后它被打印为bca。发生的事情是:当我按下后按ctrl + a然后a打印在文本框上但焦点在文本之前设置,即a。
如何处理这个。
我正在使用Windows 7,IE9,visual studio 2010
感谢。
答案 0 :(得分:0)
将焦点设置到文本框末尾的最简单方法是将文本框的文本设置为自身:
focusItem.val(focusItem.val());