在textBox或TextArea中获取事件的坐标?

时间:2011-04-28 08:41:35

标签: javascript jquery

如果我收听文本框(textarea)按键事件,当用户输入任何字符时,我可以获取事件的坐标吗?

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

2 个答案:

答案 0 :(得分:0)

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

要获得插入符号的位置,您可以使用以下函数(从another question借用):

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);
});

我提出test case on jsFiddle

答案 1 :(得分:0)