سؤال

وكيف يمكنني برمجيا تحديد نطاق محدد من النص في حقل input HTML؟ (لا أريد لتحديد كامل المجال، مجرد مجموعة فرعية)

وأيضا، كيف يمكنني تحديد النطاق المحدد حاليا في الميدان؟

هل كانت مفيدة؟

المحلول

وفيما يلي كيفية تحديد جزء من مربع نص (مجموعة مختارة) والحصول على النص المحدد:

<!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) مع 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();
} 

وشكرا لك! أريد أن تبادل وظيفتي الآن، انها تستخدم في 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; 
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top