以编程方式在input字段中select部分文本
如何以编程方式在HTML input
字段中select特定范围的文本? (我不想select整个领域,只是一个子集)
另外,我怎样才能确定一个字段中的当前select的范围?
以下是如何select文本框的一部分(范围select)并获取选定的文本:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title> Test </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"> window.onload = function() { var message = document.getElementById('message'); // Select a portion of text createSelection(message, 0, 5); // get the selected portion of text var selectedText = message.value.substring(message.selectionStart, message.selectionEnd); alert(selectedText); }; function createSelection(field, start, end) { if( field.createTextRange ) { var selRange = field.createTextRange(); selRange.collapse(true); selRange.moveStart('character', start); selRange.moveEnd('character', end); selRange.select(); field.focus(); } else if( field.setSelectionRange ) { field.focus(); field.setSelectionRange(start, end); } else if( typeof field.selectionStart != 'undefined' ) { field.selectionStart = start; field.selectionEnd = end; field.focus(); } } </script> </head> <body> <input type="text" name="message" id="message" value="Hello World" /> </body> </html>
演示
小修正。 看来,IE的MoveEnd()方法增量移动,所以selRange.moveEnd('character', end)
应该被replace为selRange.moveEnd('character', end-start)
:
function createSelection(field, start, end) { if( field.createTextRange ) { var selRange = field.createTextRange(); selRange.collapse(true); selRange.moveStart('character', start); selRange.moveEnd('character', end-start); selRange.select(); } else if( field.setSelectionRange ) { field.setSelectionRange(start, end); } else if( field.selectionStart ) { field.selectionStart = start; field.selectionEnd = end; } field.focus(); }
谢谢! 我现在要分享我的function,它与Ajaxel CMS一起使用,即时通讯
,wrapText:function(o, ot, ct) { var s = o[0].selectionStart; var e = o[0].selectionEnd; o.val(o.val().substring(0, s)+ot+o.val().substring(s,e)+ct+o.val().substring(e, o.val().length)); if (o[0].createTextRange){ var sr = o[0].createTextRange(); sr.collapse(true); sr.moveStart('character', s); sr.moveEnd('character',e-s+ot.length+ct.length); sr.select(); } else if(o[0].setSelectionRange){ o[0].setSelectionRange(s,e+ot.length+ct.length); } else if(o[0].selectionStart){ o[0].selectionStart=s; o[0].selectionEnd=e+ot.length+ct.length; } }