jQuery:找到哪个文本框已经选择了插入符号

时间:2010-12-11 08:18:17

标签: javascript jquery dom

我有一个包含多个文本输入和几个按钮的页面。当我点击一个按钮时,我希望将该按钮的值插入插入符号,即插入符号所在的字段。这是我到目前为止的函数调用:

$('li input[type="button"]').click(function(){$('#aTextInput').insertAtCaret($(this).val())});

我想用实际包含插入符号的输入替换$('#aTextInput')。有什么想法吗?

Here's insertAtCaret函数,在任何人问之前。你可能需要查看它,除非你很好奇。)

修改

所以我尝试了这个:

jQuery.extend(jQuery.expr[':'], {
    focus: "a == document.activeElement"
});

$('li input[type="button"]').click(function(){$('input:focus').insertAtCaret($(this).val())});

但是当我点击一个按钮时,根本没有任何事情发生。我实施this solution错了吗?

1 个答案:

答案 0 :(得分:3)

如果你有几个textareas,你可能想做这样的事情。

// any time a textarea gets focus, set the ID
$('textarea').focus(function(){
   focusID = $(this).attr('id');
});

// when the button is clicked
$('input[type="button"]').click(function(){    
    // insert the value into the textarea
    insertAtCaret(focusID,$(this).val())
});

Check out my example on jsFiddle here

我遇到的问题是,当单击按钮时,textarea会失去焦点,因此很难找到单击该按钮时焦点的textarea。

修改

我刚刚意识到你试图用输入来做这个,新的jsFiddle在这里:http://jsfiddle.net/tVNDL/1/

// any time a input gets focus, set the ID
$('input').focus(function(){
   focusID = $(this).attr('id');
});

// when the button is clicked
$('input[type="button"]').click(function(){    
    // insert the value into the textarea
    insertAtCaret(focusID,$(this).val())
});