将char插入光标所在的活动表单元素中
Inserting char into active form element where cursor is focused
我有一些表单字段,希望将单击的字符插入其中(光标的确切位置),但光标可以集中在任何表单字段上。因此,如果我单击a,并且光标位于text元素的1和2之间,那么结果应该是1a23
到目前为止(由于我对jQuery的了解非常有限),我做了一些简单的操作,正确地获取了点击的字符,但获取活动元素的ID会返回undefined
,所以我不能再继续了。
这个http://jsfiddle.net/NaHTw/4/指定了字段ID,所以我真的不知道如何从中获得灵感。
这是我做了一半的小提琴。
HTML
<div id="chars">
<ul>
<li>a</li>
<li>b</li>
</ul>
</div>
<br />
<input type='text' name='title' value="123" id="titleField" />
<br />
<textarea name='message'id="messageField">456</textarea>
查询
$(document).ready(function() {
$('#chars ul li').click(function(event) {
event.preventDefault();
// this is fine
var char = $(this).text();
console.log(char);
// these returns undefined
console.log($(':focus').attr('id'));
console.log($(document.activeElement).attr('id'));
console.log($(this).parents('.item').attr('id'));
// update 'element' content here by inserting 'char'
});
});
您可以在javascript中保存最后一个位置,然后插入到该选择中:
$(document).ready(function() {
// bind click on textarea and input text then save positions
var caretpos, lastitem;
$('input[type=text], textarea').on('click keyup', function(){
lastitem = $(this).attr('id');
caretpos = $('#'+lastitem)[0].selectionStart;
});
$('#chars ul li').click(function(event) {
event.preventDefault();
// this is fine
var char = $(this).text();
console.log(char);
// update 'element' content here by inserting 'char'
textval = $('#'+lastitem).val();
$('#'+lastitem).val(textval.substring(0, caretpos) + char + textval.substring(caretpos) );
caretpos = $('#'+lastitem)[0].selectionStart;
});
});
#chars ul { margin: 0; padding: 0; }
#chars li { display: inline; background-color: #aaa; padding: 5px; cursor: pointer; }
<script type='text/javascript' src='//code.jquery.com/jquery-1.9.1.js'></script>
<div id="chars">
<ul>
<li>a</li>
<li>b</li>
</ul>
</div>
<br />
<input type='text' name='title' value="123" id="titleField" />
<br />
<textarea name='message' id="messageField">456</textarea>
JSFiddle
编辑2:JSFiddle
相关文章:
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 活动选项卡's源代码-获取变量s值
- 在Angular 2中布线期间保持零部件处于活动状态
- 在ajax成功后,cluetip不适用于首次点击活动元素
- 如何使bxslider仅在移动视图中处于活动状态
- JQuery中的活动搜索栏
- 悬停下拉菜单即使在鼠标移出后也保持活动状态
- 将js添加到wordpress中以突出显示css活动菜单
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- 手动创建旋转活动指示器
- 打开网页后立即获取网页的活动javascript函数
- 使用纯javascript而非jquery使所选选项卡处于活动状态并保持非活动状态
- 菜单栏class=活动引导程序主题无法正常工作
- 如何在完整日历中的当天点击时显示活动详细信息
- 从Bootstrap获取活动选项卡ID并将其传递给PHP
- 是否可以在调用时动态设置Jquery Accordion的活动面板
- 如何在不活动5分钟后更改页面位置
- 使用 AngularJS 设置活动选项卡样式
- 获取活动的jQuery UI对话框