JQuery如何单击html元素复制到文本区域?

时间:2014-09-29 11:41:02

标签: javascript jquery html

是否可以单击列表中的文本以添加到文本框中。我制作了一个JSON api,它获取了数据库中的人员列表。然后我有一个包含文本字段的表单并显示人员列表。我想点击某个人并将其添加到文本框中。

main.js

    var ajax_call = function() {
      var $people = $('#people');

      $.ajax({
          type: 'GET',
          url: '/all/api',
          success: function(people) {
            $.each(people, function(i, person) {
                $people.empty()
            });
            $.each(people, function(i, person) {
              $people.append('<li>name: ' + person.first_name+', last: '+ person.last_name + '</li>');
            });
          }
        });
      $("#people").on("click", "li", function() {
          var content = $(this).html();
         //$("#testbox").val(content);  //replace existing name in textbox
        $("#testbox").val($("#testbox").val() + content + "\n");  //add new name to textbox
});

    };
    var interval = 800;
    setInterval(ajax_call, interval);

form.html

<form id="textbox" action="" method="post">{% csrf_token %}
            {{ form.as_p }}
            <input type="submit" value="create" />
        </form>

    <ul id="people"></ul>

4 个答案:

答案 0 :(得分:1)

我认为你的问题的答案很简单。 在您的代码中,您有

$("#people").keyup(function() {

这可能不是您想要做的,因为现在您正在等待列表上的键盘(释放键)事件。首先,您的问题表明您希望用户点击而不是按一个按钮,然后您希望列表项不是列表本身。

所以IMO你必须改变那个部分:

$("li","#people").click(function(){
  var content = this.html();
  $("#testbox").val(content);
});

答案 1 :(得分:1)

尝试附加到ul的“click”功能,但由li过滤(这允许列表保持动态),它允许您添加单个名称(两个版本覆盖现有的文本字段信息,第二个附加到:) DEMO

$("#people").on("click", "li", function() {
    var content = $(this).html();
    //$("#testbox").val(content);  //replace existing name in textbox
    $("#testbox").val($("#testbox").val() + content + "\n");  //add new name to textbox
});

答案 2 :(得分:1)

试试这个:

替换此

$("#people").keyup(function() {
        var content = $('#people').html();
        $("#testbox").val(content);
    });

用这个

$("#people").click(function() {
        var content = $('#people').html();
        $("#testbox").val(content);
    });

答案 3 :(得分:1)

如果我马上理解你的问题那么

$("#people").click(function(){
    var content = $('#people').html();
    $("#testbox").val(content);
});

应该做的工作。但我认为你应该使用自定义属性而不是id,因为特定标签只能有一个id。