Javascript Ajax—当用户按enter键提交数据时,页面将重新加载

Javascript Ajax—当用户按enter键提交数据时,页面将重新加载,javascript,ajax,forms,Javascript,Ajax,Forms,我有一个简单的表单,可以将消息从一个人发送到另一个人,消息通过带有方法POST的AJAX发送,而无需重新加载页面。我有一个问题,问题是当用户在这个字段中按[ENTER]时,AJAX不工作,页面被重新加载。我提供了一个表单,当用户按ENTER键时,ajax正常运行 见我的文件: -Javascript: function enviarMensagem() { var remetente = document.getElementById('remetente').value

我有一个简单的表单,可以将消息从一个人发送到另一个人,消息通过带有方法POST的AJAX发送,而无需重新加载页面。我有一个问题,问题是当用户在这个字段中按[ENTER]时,AJAX不工作,页面被重新加载。我提供了一个表单,当用户按ENTER键时,ajax正常运行

见我的文件: -Javascript:

function enviarMensagem()
    {
        var remetente = document.getElementById('remetente').value;
        var destinatario = document.getElementById('destinatario').value;
        var mensagem = document.getElementById("mensagem").value;
        if(mensagem.length == 0 || mensagem.length  > 128)
        {
            return;
        }
        xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function()
        {
            if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
            {
                document.getElementById("mensagens").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("POST", "saida.php", true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send("remetente=" + remetente + "&destinatario=" + destinatario + "&mensagem=" + mensagem);
    }
-HTML:

<form action="" >
    <input type="hidden" id="remetente" name="remetente" value="Erick">
    <input type="hidden" id="destinatario" name="destinatario" value="Fernanda">
    <input type="text" id="mensagem" /> <input type="button" value="Enviar" onclick="enviarMensagem();">
</form>
<div id="mensagens"></div>

问题在于,您只将Ajax函数应用于按钮的onclick处理程序。您需要将其添加到表单的onsubmit操作中

<form action=""  onsubmit="enviarMensagem(); return false;">
<input type="hidden" id="remetente" name="remetente" value="Erick">
<input type="hidden" id="destinatario" name="destinatario" value="Fernanda">
<input type="text" id="mensagem" /> <input type="button" value="Enviar" >

可以通过单击submit按钮或使用Enter键启动keyup事件来启动表单上的提交。将侦听器添加到onsubmit操作将涵盖这两个方面