javascript - 将带有 'enter' 键的用户文本附加到 ul(聊天框)jQuery

标签 javascript jquery

我正在使用 jQuery 设计一个聊天框。 我想使用“Enter”键将包含用户文本的 li 附加到 ul (没有 PHP 或任何服务器),但它不起作用。

我的代码如下所示:

var txt = "<b>me:</b>"+$(".usertext").val();
var myli = $("<li>").html(txt);
$('chav_box_in').keypress(function(e) 
{
    if ( $(".usertext").val() != "" )   
    {
        if (e.keyCode == 13)
        {
            $("#send").click(function(){
                $("#chatlog").append(myli);
                $(".usertext").val("");
            })
        }
    }
});

My chat .

最佳答案

每次按下 Enter 键时,您都会在 #send 元素上创建一个单击事件监听器,而不是实际触发该事件。

如果您打算按 Enter 键并单击“发送”按钮来添加消息,您可以创建一个函数并将其作为参数传递给 jQuery 事件监听器方法

function appendChat(e) {
    var id = e.target.id;
    //variables for testing, you could have all of the
    //comparisons in the 'if' statement, just using these to
    //make the 'if' statement more clear
    var notEmpty = $(".usertext").val() != "",
        isEnterKeypress = e.type == "keypress" && e.keyCode == 13,
        isSendClick = e.type == "click" && id == "send";

    if( notEmpty && (isEnterKeypress || isSendClick) ) {
       var txt = "<b>me:</b>"+$(".usertext").val();
       $("#chatlog").append($("<li>").html(txt));
       $(".usertext").val("");
    }
}

$("#send").click(appendChat);
$(".chav_box_in").keypress(appendChat);

演示

function appendChat(e) {
  var id = e.target.id;
  var notEmpty = $(".usertext").val() != "",
      isEnterKeypress = e.type == "keypress" && e.keyCode == 13,
      isSendClick = e.type == "click" && id == "send";

  if( notEmpty && (isEnterKeypress || isSendClick) ) {
    var txt = "<b>me:</b>"+$(".usertext").val();
    $("#chatlog").append($("<li>").html(txt));
    $(".usertext").val("");
  }
}

$("#send").click(appendChat);
$(".chav_box_in").keypress(appendChat);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="chatlog"></ul>
<input class="usertext chav_box_in"><button id="send">Send</button>

关于javascript - 将带有 'enter' 键的用户文本附加到 ul(聊天框)jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34480163/

相关文章:

javascript - 等到图像加载后再执行功能

javascript - 您必须向handleSubmit() 传递一个onSubmit 函数,或者将onSubmit 作为prop | 传递。回归形式

javascript - jQuery onclick 问题

JQuery 从远程站点加载内容

javascript - 将 JSON 数组中的字符串元素解析为整数

javascript - 如何使用 Ag-Grid 动态增加行高?

javascript - 为什么 npm 看不到类星体?

javascript - Jquery 将不透明度淡化为 100%

php - jQuery.parseJSON 在 firebug 控制台中始终返回 null

javascript - 更改 :hover to click/tap function on mobile/touch devices not working