获得焦点上的克拉位置以获得输入

时间:2017-07-31 11:28:16

标签: javascript jquery html

当用户在填充的输入框内单击时,我想获取当前光标位置。但是使用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”,所以我想获得光标出现后的字符数。有没有办法得到这个?

1 个答案:

答案 0 :(得分:1)

你的逻辑是正确的。但是,事件侦听器中的this上下文不是您的输入元素。我建议在变量中保存对元素的引用(如果您事先知道ID)或通过event.target访问元素(您还必须在事件中添加event参数在那种情况下听众。)

一个非常基本的工作示例(检查控制台输出或此fiddle):

&#13;
&#13;
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;
&#13;
&#13;

使用event.target

&#13;
&#13;
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;
&#13;
&#13;