当用户在填充的输入框内单击时,我想获取当前光标位置。但是使用this.selectionStart;
仅使用以下代码给出'0':
$('.exampleDiv').on('focus', 'input', function() {
console.log(this.selectionStart);
});
HTML
<div class="exampleDiv" style="width=300px;"><input value="This is a prefilled value"></div>
我的猜测是它给出了值0,因为.on(focus)
代码在输入框中设置了光标位置之前运行。
是否还有其他可以使用的输入元素激活事件?
示例:输入框具有值:“这是预填充值”
用户点击“pre | filled”,所以我想获得光标出现后的字符数。有没有办法得到这个?
答案 0 :(得分:1)
你的逻辑是正确的。但是,事件侦听器中的this
上下文不是您的输入元素。我建议在变量中保存对元素的引用(如果您事先知道ID)或通过event.target
访问元素(您还必须在事件中添加event
参数在那种情况下听众。)
一个非常基本的工作示例(检查控制台输出或此fiddle):
var input = document.getElementById('foo');
function caretController() {
var caretPos = input.selectionStart;
console.log('caret position:', caretPos);
}
input.addEventListener('focus', caretController);
&#13;
<input id="foo" type="text">
&#13;
使用event.target
:
function caretController(event) {
var caretPos = event.target.selectionStart;
console.log('caret position:', caretPos);
}
document.getElementsByTagName('input')[0].addEventListener('focus', caretController);
&#13;
<input type="text">
&#13;