获取textBox或TextArea中事件的坐标

Get coordinates of event in textBox or TextArea?

本文关键字:事件 坐标 TextArea textBox 获取      更新时间:2023-09-26

如果我监听文本框(textarea)按键事件,当用户输入任何字符时,我能得到事件的坐标吗?

$('#textAreaId').bind('keydown', function(event) {    
    var data = event.originalEvent.touches ? event.originalEvent.touches[0] : event;
    alert(data.pageY);    
});

您想要元素的位置还是插入符号的位置?

要获得插入符号的位置,可以使用以下函数(从另一个问题借来的):

function getCaret(el) { 
  if (el.selectionStart) { 
    return el.selectionStart; 
  } else if (document.selection) { 
    el.focus(); 
    var r = document.selection.createRange(); 
    if (r == null) { 
      return 0; 
    } 
    var re = el.createTextRange(), 
        rc = re.duplicate(); 
    re.moveToBookmark(r.getBookmark()); 
    rc.setEndPoint('EndToStart', re); 
    return rc.text.length; 
  }  
  return 0; 
}

获取textarea元素相对于文档的位置,使用.offset:

$("#textAreaId").bind('keydown', function(event){
    var offset = $(this).offset();
    console.log(offset);
});

我在jsFiddle上放了一个测试用例

插入符号在文本区的位置,从字符开始