我有一个简单的表单,可以将消息从一个人发送到另一个人,并且消息由AJAX通过方法POST发送,无需重新加载页面。我有一个,问题是当用户在此字段中按[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>
答案 0 :(得分:1)
问题是你只是将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" >
表单上的提交可以通过单击提交按钮或使用Enter键的keyup事件启动。将侦听器添加到onsubmit操作包括两者。