我正在尝试使用Javascript制作一个文本框,其中包含文本框开头的一些只读文本,然后允许编辑只读文本.我怎么能在Javascript/jquery中这样做?
Joh*_*n S 20
这是一个尝试:
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;
}
});Run Code Online (Sandbox Code Playgroud)
<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>Run Code Online (Sandbox Code Playgroud)
这将禁用只读部分的左箭头和右箭头以外的键.它还会在只读部分的末尾禁用退格键.
从我读过的内容来看,这不适用于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'));Run Code Online (Sandbox Code Playgroud)
<input id="field" type="text" value="CAN'T TOUCH THIS!" size="50" />Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18478 次 |
| 最近记录: |