0

ある人から別の人にメッセージを送信するための簡単なフォームがあり、ページをリロードせずに、メソッド 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>
4

1 に答える 1

1

問題は、ボタンの onclick ハンドラーに Ajax 関数のみを適用していることです。フォームの 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 キーによるキーアップ イベントから開始できます。リスナーを onsubmit アクションに追加すると、両方がカバーされます。

于 2012-09-21T15:24:56.193 に答える