2014-09-05 61 views
2

根据所选的当前光标/文本框,当用户单击某个按钮/字符时,我希望将该字符插入光标所在的位置。Javascript单击按钮插入文本

下面是一个JS提琴例如:

http://jsfiddle.net/YD6PL/32/

JS:

$(document).ready(function() { 
    $(".buttons").click(function() { 
     var cntrl = $(this).html(); 
     $("#txt-area1").append(cntrl);//not sure what to use here to "know" where cursor currently is 
    }); 
}); 

HTML:

<textarea id="txt-area1" readonly></textarea> 
<textarea id="txt-area2" readonly></textarea> 
<textarea id="txt-area3" readonly></textarea> 
<textarea id="txt-area4" readonly></textarea> 
<div> 
<button class="buttons">á</button> 
<button class="buttons">é</button> 
<button class="buttons">í</button> 
<button class="buttons">ó</button> 
<button class="buttons">ú</button> 
<button class="buttons">ñ</button> 
<button class="buttons">ü</button> 
</div> 

我怎样才能让上面的 “知道”,它的多个文本框被选中并只将字符插入此框?

+0

如何当一个元素被集中约追加类'active',当损失焦点删除该类。然后您可以将文本框添加到“active”类。 – 2014-09-05 18:31:35

回答

4

将一类active添加到单击的textarea,并在追加时选择该活动的textarea。在textarea的

$('textarea').click(function(){ 
    $(this).addClass('active').siblings('.active').removeClass('active') 
}); 

$(".buttons").click(function() { 
    var cntrl = $(this).html(); 
    $('textarea.active').append(cntrl); 
}); 

jsFiddle Demo

+1

快速回答。我有同样的想法,但哇,你想到了它,并且实现了我刚想过的那么快。 – 2014-09-05 18:40:03

+0

正是我在找的东西。谢谢! – mtcrts70 2014-09-05 19:25:33

1

使用焦点事件:

$(document).ready(function() { 

    var selected = undefined; 

    $('textarea').on('focus', function(){ 
     selected = $(this) 
    }) 

    $(".buttons").click(function() { 
     if(selected) { 
      var cntrl = $(this).html(); 
      selected.append(cntrl); 
     } 
    }); 
}); 

jsFiddle Demo

+0

+1 - 更清洁的答案 – 2014-09-05 19:00:23

0
var currentDiv; 

$(document).ready(function() { 
    $(".buttons").click(function (el) { 
     var cntrl = $(this).html(); 

     $(currentDiv).append(cntrl); 
    }); 
}); 

$("#parent").click(function(e) { 
    currentDiv = e.target 
}); 
+0

您能否通过解释您修正的问题来改善您的答案? – amphetamachine 2014-09-05 20:42:41