要件があります。テキスト ボックスには最大 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 を使用しています。
ありがとうございます。