0
我有一個要求:一個文本框最多可以有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它應該erace一切從文本和打印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被打印在文本框中,但重點是在文本之前設置,這是一個。
如何處理這個。
我使用的是Windows 7,IE9,visual studio 2010.
謝謝。
我試圖檢查focusItem的價值'如果(txt.length> 0 &&((key> = 65 && key <= 90)||(key> = 48 && key <= 57)||(key> = 97 && key <= 122))){ sel.text = String.fromCharCode (鍵).toLowerCase(); } txt = sel.text; } '但它返回null。 –
如果你的文本框有一個'myTextBox'的id,那麼執行'$('#myTextBox').val($('#myTextBox').val())'會把光標放在最後。您只需要獲取文本框的值,不需要嘗試爲該部分創建選擇範圍。 – Bill
它不工作:( –