javascript - 如何仅将文本框中的某些文本设置为只读,同时允许编辑其余文本

标签 javascript jquery

我正在尝试使用 Javascript 制作一个文本框,该文本框在文本框的开头包含一些只读文本,然后允许在只读文本之后进行编辑。我如何在 Javascript/jquery 中执行此操作?

最佳答案

这是一个尝试:

var readOnlyLength = $('#field').val().length;

$('#output').text(readOnlyLength);

$('#field').on('keypress, keydown', function(event) {
  var $field = $(this);
  $('#output').text(event.which + '-' + this.selectionStart);
  if ((event.which != 37 && (event.which != 39)) &&
    ((this.selectionStart < readOnlyLength) ||
      ((this.selectionStart == readOnlyLength) && (event.which == 8)))) {
    return false;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input id="field" type="text" value="CAN'T TOUCH THIS!" size="50" />
<div id="output">
</div>

这会禁用只读部分的左箭头和右箭头以外的键。它还会在只读部分末尾禁用退格键。

据我所知,这不适用于 IE <= 8。


这里是纯 JavaScript(没有 JQuery):

function makeInitialTextReadOnly(input) {
  var readOnlyLength = input.value.length;
  field.addEventListener('keydown', function(event) {
    var which = event.which;
    if (((which == 8) && (input.selectionStart <= readOnlyLength)) ||
      ((which == 46) && (input.selectionStart < readOnlyLength))) {
      event.preventDefault();
    }
  });
  field.addEventListener('keypress', function(event) {
    var which = event.which;
    if ((event.which != 0) && (input.selectionStart < readOnlyLength)) {
      event.preventDefault();
    }
  });
}

makeInitialTextReadOnly(document.getElementById('field'));
<input id="field" type="text" value="CAN'T TOUCH THIS!" size="50" />

关于javascript - 如何仅将文本框中的某些文本设置为只读,同时允许编辑其余文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15181417/

相关文章:

javascript - iframe 导致 css 弹出窗口出现问题

javascript - Python Flask 在不重新加载整个页面的情况下发送警报

javascript - 如何使用 AngularJS i18n 为不同的语言定义不同的字体?

javascript - 我怎样才能防止这种 Material 波纹动画泄漏到其他 div 中?

jquery - 这个多 Action Jquery 可以简化吗?

jquery - 如何防止每次单击按钮时 $.getJSON 都会增加?

javascript - Angular promise 然后回调不会在 chrome.storage.local.get 上触发

javascript - 如何使用 javascript 获取 yii2 中的列值而不是 ID

javascript - 将 JSON 转换为 HTML 树

javascript - 使用 jquery(或 vanilla JS)在页面加载时格式化表格中的数字