使用JavaScript so按钮将文本插入当前文本字段

使用JavaScript so按钮将文本插入当前文本字段,javascript,html,text,textbox,Javascript,Html,Text,Textbox,非常简单,我想写一些代码来显示按钮列表。单击其中一个时,将预定义文本块插入光标此时所在的文本字段中。我可以获得要插入的文本,但只能在一个文本字段中 我需要这个文本是可扩展的,因为它将在不同的文本字段数页使用 到目前为止,我的代码如下。我知道我需要以某种方式将变量inFocus从第二个JavaScript函数插入到当前刚刚调用txt1的onClick=insertText函数的第一个参数中 是我找错了树还是这是正确的方法 我尝试过在主代码中使用JavaScript,但没有成功。有什么想法吗 函数i

非常简单,我想写一些代码来显示按钮列表。单击其中一个时,将预定义文本块插入光标此时所在的文本字段中。我可以获得要插入的文本,但只能在一个文本字段中

我需要这个文本是可扩展的,因为它将在不同的文本字段数页使用

到目前为止,我的代码如下。我知道我需要以某种方式将变量inFocus从第二个JavaScript函数插入到当前刚刚调用txt1的onClick=insertText函数的第一个参数中

是我找错了树还是这是正确的方法

我尝试过在主代码中使用JavaScript,但没有成功。有什么想法吗

函数insertTexttext { var-elemID=false; $'input,textarea'.focusfunction{ elemID=$this.attr'id'; }; var elem=document.getElementByIdelemID; elem.innerHTML+=文本; } 标题 函数insertTextelemID,文本 { var elem=document.getElementByIdelemID; elem.innerHTML+=文本; } var-inFocus=false; $'input,textarea'.focusfunction{ inFocus=$this.attr'id'; }; $'mybutt'。单击函数{ 警报“光标是元素id:”中的最后一个+inFocus; };


您有jQuery,因此应该去掉按钮上的onclick=并使用jQuery方式

例如:

$('input[type=button]').click(function(){
    $('#txt1').val('the text you want to insert....');
});

您可以从a和您的id组合jQuery选择器:

$('#mybutt').click(function() {
    $('#' + inFocus).val('the text you want to insert....');
});
这会将文本插入到id为inFocus的元素中。
如果未选择textarea,例如inFocus为false,则会抛出错误。

内联javascript事件属性是IMO,尤其是在加载jQuery时。jQuery使将事件附加到DOM对象变得轻而易举

使用button而不是input type=按钮通常是一个更好的主意,因为您的显示和值是分开的

有关更多信息,请参阅代码注释

小提琴:

HTML


我认为,这应该对您有所帮助。或者您需要向我提供更多详细信息。要从数据库中插入数据,您需要使用字段id和使用ajax调用函数,并将该值插入textfield。

您可以只添加相关的HTML和JavaScript吗。PHP do-while循环什么都不做,只是混淆了问题。do-while循环创建了许多按钮,因为这些按钮是从数据库中提取的,所以它有点相关,与您遇到的客户端问题无关。发布它生成的HTML,这样我们就可以处理它,或者只是接受我的答案:这到底是一个更好的答案吗?奇怪…我是2019年来的,现在你可以用你的欢迎。谢谢你的接受,投票也会很棒的。
<textarea cols="50" rows="5" id="txt1"></textarea>
<textarea cols="50" rows="5" id="txt2"></textarea>
<textarea cols="50" rows="5" id="txt3"></textarea>
<br>
<button type="button" value=" word1 " class="insert-word">word1</button>
<button type="button" value=" word2 " class="insert-word">word2</button>
var input_position = 0, last_input = false;
// if the input[type="text"] or textarea has a keyup or mouseup event then run this
$('input[type="text"], textarea').on('keyup mouseup', function () {
    last_input = $(this);
    // gets the last input's position
    if('selectionStart' in this) {
        input_position = this.selectionStart;
    } else if('selection' in document) {
        this.focus();
        var Sel = document.selection.createRange();
        var SelLength = document.selection.createRange().text.length;
        Sel.moveStart('character', -this.value.length);
        input_position = Sel.text.length - SelLength;
    }
});

$('button.insert-word').click(function () {
    if(!last_input) return; // if an input wasn't selected don't run
    var last_input_value = last_input.val(); // value of input
    var word_to_insert = this.value; // value of button
    // split the last input's value then insert the word    
    last_input.val([
        last_input_value.slice(0, input_position),
        word_to_insert,
        last_input_value.slice(input_position)
    ].join(''));
});
    <html>
    <head>
    <script src='jquery.js'></script>
    <script>
    $(document).ready(function(){
        $('.buttonClick').click(function(){


        });
        $( ".textFocus" ).focusout(function() {
         $('#' + this.id).val('This text is append when mouse out from textfield.');
      });


    });
    </script>
    </head>
    <body>
    <button id='b1' class='buttonClick'>button1</button>
    <button id='b2' class='buttonClick'>button2</button>
    <button id='b3' class='buttonClick'>button3</button>
    <button id='b4' class='buttonClick'>button4</button>
    <button id='b5' class='buttonClick'>button5</button><br />
    Textbox1: <textarea cols="50" rows="10" id="txt1" class='textFocus'></textarea><br />
    Textbox2: <textarea cols="50" rows="10" id="txt2" class='textFocus'></textarea><br />
    Textbox3: <textarea cols="50" rows="10" id="txt3" class='textFocus'></textarea>

    </body>
    </html>