单个textarea中的按钮值

时间:2015-02-10 10:42:36

标签: javascript jquery

在我的代码中

<script>
$(document).ready(function(){
    $("#btn").on('click', function() {
        var caretPos = document.getElementById("txt").selectionStart;
        var textAreaTxt = $("#txt").val();
        var txtToAdd = $("#btn").val();
        $("#txt").val(textAreaTxt.substring(0, caretPos) + txtToAdd + textAreaTxt.substring(caretPos) );
    })
});
</script>

HTML

<textarea id="txt" rows="15" cols="70"></textarea>
<input type="button" id="btn" value="OK" />
<input type="button" id="btn" value="Bye" />
<input type="button" id="btn" value="TC" />

我想在textarea中提供这些值。但它只给出了Ok按钮的价值。我如何在textarea中给出每个按钮值

5 个答案:

答案 0 :(得分:4)

您在元素上拥有相同的ID。 ID必须是唯一的。您可以使用class并结束:

$(".btn").on('click', function() {
  $("#txt").val(this.value);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="txt" rows="5" cols="10"></textarea>
<input type="button" class="btn" value="OK" />
<input type="button" class="btn" value="Bye" />
<input type="button" class="btn" value="TC" />

答案 1 :(得分:1)

试试这个 的 HTML

<textarea id="txt" rows="15" cols="70"></textarea>
<input type="button" id="btn" value="OK" />
   <input type="button" id="btn" value="Bye" />
   <input type="button" id="btn" value="TC" />

<强>的javascript

 $('input#btn').click(function() 
    { 
       $('#txt').val($('#txt').val()+this.value); // append the value of each button
    })

演示here

答案 2 :(得分:1)

<textarea name="insert" rows="5" cols="30" id="insert" onblur="myFunction()"></textarea>
<button class="myvalue" id="myvalue">Ok</button>
    <button class="myvalue" id="myvalue">Bye</button>
    <button class="myvalue" id="myvalue">Tc</button>
<script>
function insertAt (myField, myValue, startSel, endSel)
 {
if (startSel || startSel == '0') {
    var startPos = startSel;

    var endPos = endSel;

    myField.val(myField.val().substring(0, startPos)+ myValue+ myField.val().substring(endPos, myField.val().length));

  }`  else {
  myField.val() += myValue;
  }`}var targetBox = $('textarea#insert'),
startSel, 
endSel;`targetBox.bind('focusout', function() {
startSel = this.selectionStart;
endSel = this.selectionEnd;
});

$(".myvalue").click(function() {
    var myValue = $(this).text();
    insertAt(targetBox, myValue, startSel, endSel);

});    
</script>

终于可行了

答案 3 :(得分:0)

  

我建议您将按钮id更改为class,因为id对每个元素都是唯一的,因此您必须使用class代替id。< / p>

$("input.btn").on('click', function() {
    $("#txt").val($("#txt").val()+$(this).val());
})

<强> Demo

答案 4 :(得分:0)

你的所有按钮都有相同的'id',而'OK'是第一个,所以这就是那个被返回的按钮......

要获取单击按钮的值,您需要为每个按钮提供一个唯一的ID(无论如何都应该如此)。

我会将你的按钮放在一个单独的容器中,可能是一个div,并将click处理程序应用于该容器。在处理程序函数中,查看事件目标是否具有值属性,如果有,则将其发送到文本框。

或者你可以给每个按钮一个处理程序,这取决于你的情况......

丹尼