0

ページを更新せずにメッセージが送信されるように、チャットに jQuery スクリプトを配置しました。

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript">

    $(document).ready(function(){
            $("#msgsending").validate({
               type: "POST",
                    debug: false,

                    submitHandler: function(form) {
                            // do other stuff for a valid form
                            $.post('index.php', $("#msgsending").serialize(), function(data) {

                            });
                    }
            });
    });
    </script>

そしてフォーム

 <form id="msgsending" name="form" method="post" action="" > 
<input name="message" id="message" type="text" maxlength="350" />

<input name="message" id="message" type="text" maxlength="350" />

<input name="submit" type="submit" value="Send!" />

</form>

コードは完全に機能します。(index は、メッセージ + ユーザー名をデータベースに挿入するスクリプトです)

しかし今、私には問題があります。

送信後のメッセージ入力でテキストが削除されません。たくさんのページをグーグルで検索しましたが、すべてのコードが機能しませんでした。(いくつかは機能しましたが、メッセージは送信されません)

あなたは私に何を勧めますか?

4

3 に答える 3

1

$('#message').val('');の値をクリアする必要がありinputます。メッセージが送信された後にこれを行うと思います。たとえば、次のようになります。

$(document).ready(function(){
    $("#msgsending").validate({
       type: "POST",
          debug: false,
          submitHandler: function(form) {
               // do other stuff for a valid form
               $.post('index.php', $("#msgsending").serialize(), function(data) {
                    $('#message').val('');
               });
          }
    });
});

ID #messageは一意であり、同じIDを持つ 2 つの要素を持つことはできないため、これは を持つ最初の要素でのみ機能しますID

于 2013-02-20T15:27:31.980 に答える
0

.post()フォームをクリアまたはリセットするために、 のコールバック関数内に任意のコードを配置できます。

type: "POST"のオプションとしてもリストアップしました.validate()このプラグインの有効なオプション/パラメーターではないため、これを削除する必要があります。

ajax を実行しているため、ページのリダイレクトを防ぐためにreturn false、末尾にa が必要です。submitHandler

オプションで、or since$('#msgsending').serialize()をコールバック関数に渡すこともできます。$(form).serialize()form.serialize()formsubmitHandler

$(document).ready(function(){
    $("#msgsending").validate({
        type: "POST", // <-- REMOVE THIS... not a valid plugin option
        debug: false,
        submitHandler: function(form) {
            // do other stuff for a valid form
            $.post('index.php', $(form).serialize(), function(data) {
                $('#message').val(''); // clears out #message
                // any other code to clear out or reset the form
            });
            return false; // prevent page redirection
        }
    });
});
于 2013-02-20T16:26:10.663 に答える
0

それ以外の

$.post('index.php', $("#msgsending").serialize(), function(data) {

});

次のようなことができます:

var data = $("#msgsending").serialize();
$('#message').val('');

$.post('index.php', data, function(data) {

});

リクエストを送信する前にメッセージ フィールドを空にするか、@adeneo が提案するように、AJAX の成功コールバックでフィールドを空にすることができます。

于 2013-02-20T15:28:22.680 に答える