【问题标题】:Auto insert message in textarea/text when user(s) hit the enter当用户按 Enter 键时,自动在 textarea/text 中插入消息
【发布时间】:2015-06-12 22:34:51
【问题描述】:

我正在制作简单的聊天室,我在 index.php 中有文本区域,用户可以在其中输入他/她的消息。我使用链接来传递 ajax 而不是按钮中的值。在我的情况下,我通常单击“发送”链接以传递值。但是当用户点击输入他/她的消息并自动显示到 div 时,我该如何解决这个问题?

**

索引.php

**

<form name="form1" onsubmit="submitAjaxQuery(event)" >
<textarea name="msg"></textarea><br/>
<a href="#" onclick="submitChat()"> Send </a>
</form>
function submitChat(){

    if( form1.msg.value ==''){ 
    alert("All fiels are mandatory");
    return; 
    }

    form1.uname.readonly=true;
    form1.uname.style.border='none';


    var uname= form1.uname.value;  
    var msg = form1.msg.value;


    var xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function(){
        if(xmlhttp.readyState == 4 && xmlhttp.status ==200)
        {
         document.getElementById('chatlogs').innerHTML = xmlhttp.responseText;

        }

    }

    xmlhttp.open('GET','insert.php?uname='+uname+'&msg='+msg,true);
    xmlhttp.send();
}

【问题讨论】:

    标签: javascript php jquery ajax


    【解决方案1】:

    嗨,你可以这样做。

        $("textarea").keydown(function(e)
    {
        if (e.keyCode == 13)
        {
          submit();
        }
    }
    

    【讨论】:

      【解决方案2】:

      一般来说,要做的事情是添加一个“onKeyDown”处理程序,查看哪个键触发了事件,如果键是幻数13(即回车),则执行提交。看起来像这样:

      var onKeyDown = function(e) {
        if (e.which == 13) {
          e.preventDefault();
          submitChat();
        }
      };
      
      $("#id-to-text-area").on("keydown", onKeyDown);
      

      【讨论】:

        【解决方案3】:
        **Add Handle() function onkeypress event**
        <form name="form1" onsubmit="submitAjaxQuery(event)" >
        <textarea name="msg"></textarea><br/>
        <a href="#" onclick="submitChat()" onkeypress="handle()"> Send </a>
        </form>
        
         function handle(e){ {
            if(e.which == 13) {
                if( form1.msg.value ==''){ 
             alert("All fiels are mandatory");
        return; 
        }
        
        form1.uname.readonly=true;
        form1.uname.style.border='none';
        
        
        var uname= form1.uname.value;  
        var msg = form1.msg.value;
        
        
        var xmlhttp = new XMLHttpRequest();
        
        xmlhttp.onreadystatechange = function(){
            if(xmlhttp.readyState == 4 && xmlhttp.status ==200)
            {
             document.getElementById('chatlogs').innerHTML = xmlhttp.responseText;
        
            }
        
        }
        
        xmlhttp.open('GET','insert.php?uname='+uname+'&msg='+msg,true);
        xmlhttp.send();
        }
        }
        

        【讨论】:

          【解决方案4】:

          请这样尝试,

          $("textarea").keypress(function(event){
                       var p = event.which;           
                       if(p==13){ // Enter key press
                  // Your code goes here
              }
              });
          

          【讨论】:

            【解决方案5】:

            您可以将此代码用于输入事件。这里js fiddle

            html代码

            <form name="form1" onsubmit="submitAjaxQuery(event)" >
            <textarea id="area" name="msg"></textarea><br/>
            <a href="#" onclick="submitChat()"> Send </a>
            </form>
            

            javascript

            $("#area").keypress(function(e) {
                if(e.which == 13) {
                    submitChat();
                    alert('message submit!');
                }
            });
            

            更新

            您可能需要添加 jquery 库..

            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
            

            【讨论】:

              【解决方案6】:
              $("textarea").keypress(function(event) {
              if (event.which == 13) {
                  event.preventDefault();
                  $("form").submit();
              }
              });
              

              【讨论】:

                【解决方案7】:

                您可以尝试检测在您的 [name=msg] 文本区域内按下返回键的时间。这是普通的 JS(但您也可以 use jQuery 为此)添加到页面底部。

                    <script type="text/javascript"> 
                    function listenKeys(evt) { 
                      var evt = (evt) ? evt : ((event) ? event : null); 
                      var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
                      if ((evt.keyCode == 13) && (node.name=="msg"))  {
                                // RETURN KEY DETECTED IN msg, EXECUTE YOUR CODE HERE
                      } 
                    } 
                
                    document.onkeypress = listenKeys; 
                
                    </script>
                

                希望对你有帮助

                【讨论】:

                • 嗯,这很容易。什么困扰着你?
                猜你喜欢
                • 2023-03-26
                • 1970-01-01
                • 2011-10-03
                • 1970-01-01
                • 2012-06-26
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2010-11-29
                相关资源
                最近更新 更多