HTML 表单,使 Tab 键触发器缩进
HTML form, make tab key trigger indent?
浏览器中的默认行为是选择下一个表单元素。我希望我的文本框缩进代码,比如说按下制表符时有 4 个空格。就像在 IDE 中缩进代码一样。如何在 JavaScript 中实现这种行为?如果我必须使用jQuery,或者它更容易,我很好。
谢谢!
跟踪键代码并向元素添加 4 个空格应该可以做到这一点。 可以在按下 Tab 键时阻止默认值。 这样?:
在所有评论后编辑:
啊,好吧,所以你实际上是在要求几个JS函数(获取文本区域中的光标位置,更改文本,设置文本区域中的光标位置)。 多环顾四周会给你所有这些,但既然我是个好人,我会把它放在那里给你。 其他答案可以在这篇关于getCursorPosition()的文章和这篇关于setCursorPosition()的文章中找到。 我为你更新了 jsFiddle。 这是代码更新
<script>
$('#myarea').on('keydown', function(e) {
var thecode = e.keyCode || e.which;
if (thecode == 9) {
e.preventDefault();
var html = $('#myarea').val();
var pos = $('#myarea').getCursorPosition(); // get cursor position
var prepend = html.substring(0,pos);
var append = html.replace(prepend,'');
var newVal = prepend+' '+append;
$('#myarea').val(newVal);
$('#myarea').setCursorPosition(pos+4);
}
});
new function($) {
$.fn.getCursorPosition = function() {
var pos = 0;
var el = $(this).get(0);
// IE Support
if (document.selection) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
// Firefox support
else if (el.selectionStart || el.selectionStart == '0')
pos = el.selectionStart;
return pos;
}
} (jQuery);
new function($) {
$.fn.setCursorPosition = function(pos) {
if ($(this).get(0).setSelectionRange) {
$(this).get(0).setSelectionRange(pos, pos);
} else if ($(this).get(0).createTextRange) {
var range = $(this).get(0).createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
}(jQuery);
</script>
<textarea id="myarea"></textarea>
相关文章:
- 如何格式化字符串以修复Javascript中的缩进
- Vim-当代码的文字字符串中有括号时,如何实现正确的缩进
- Javascript 意外返回值,带有特定的缩进
- JQuery:如何在循环 dom 元素时正确缩进字符串
- JavaScript将缩进文本转换为HTML列表重复顶层<李>'s为<ul>'s
- 如何避免/最小化列表中列表的缩进
- vim JavaScript缩进插件-命令是什么
- 使用 PEG.js 解析缩进级别
- 崇高的文本新行失去缩进
- Redactor文本编辑器– 在代码视图中重新缩进缩小的HTML
- NVD3.js缩进树问题
- 缩进第二行的文本块
- 从 coffeescript 编译到 javascript 后保持缩进
- 使用 d3.xml 而不是 d3.json 绘制可折叠缩进树
- 超级鱼子项中的文本缩进继承
- 对文本区域段落的每一首行应用缩进
- 在 VIM 上的脚本标记中正确缩进 JavaScript
- 如何保存 MSXML2.带缩进的 DomDocument?(我认为它使用MXXMLWriter)
- 缩进 JQuery 可选列表 - 当事先不知道缩进级别数时
- HTML 表单,使 Tab 键触发器缩进