在textarea内:如果用户在空行上按Enter键则捕获

时间:2011-12-14 00:22:41

标签: jquery keydown

我知道这是一个奇怪的问题,但是:在textarea内部,我如何知道用户是否按下Enter键(e.keycode == 13)在空行上keydown活动?

每次用户按下之外,我必须触发一个特定的同步功能,如果用户只是为了好玩添加新行(在这些情况下调用同步功能,将会浪费资源) )。

2 个答案:

答案 0 :(得分:2)

找到解决方案!

$('#q').keydown(function(e){
    if(e.keyCode == 13) {
        if($(this).val()) {
            if($(this).val().substr($(this).getCursorPosition()-1,1).length) {
                //sync function here!
            } else {
                //user is pressing enter on empty line
            }
        }
    }
});

new function(a){a.fn.getCursorPosition=function(){var b=0;var c=a(this).get(0);if(document.selection){c.focus();var d=document.selection.createRange();var e=document.selection.createRange().text.length;d.moveStart("character",-c.value.length);b=d.text.length-e}else if(c.selectionStart||c.selectionStart=="0")b=c.selectionStart;return b}}(jQuery);

答案 1 :(得分:0)

嗯,这取决于他们如何到达那里。如果用户按完整行输入,是否会调用同步功能?如果是这样,那么他们如何得到一个空行呢?