0

私は明らかに愚かなことをしています。何が悪いのかよくわかりません。「送信」ボタンをクリックするたびに、クリックイベントが発生しません。

function CreateNewMessage()
{
    var receiver = $("#receiver").value;
    var msg_body = ("#msg_body").value;
    $("#submit").click(function(event) {
        alert("it works!");
        $.post("new/", {"receiver" : receiver, "msg_body" : msg_body});
    });
}

(function() {
    $(document).ready(function() {
        CreateNewMessage();
    });
})();

そしてHTMLボタン

<input id="submit" value="Send" type="submit">

誰が私のエラーを見つけることができますか?

編集:

みんなの提案を考慮した後の私のコードは次のようになります。

function CreateNewMessage()
{
    $("#submit").click(function(event) {
        var receiver = $("#receiver").val();
        var msg_body = $("#msg_body").val();
        alert("it works!");
        $.post("message/new/", {"receiver" : receiver, "msg_body" : msg_body});
    });
}

$(document).ready(function() {
    CreateNewMessage();
});

まだリクエストが正しく送信されておらず、コンソールにエラーが記録されていません。上記のコードでは、クリック イベントではなく送信イベントを使用してみましたが、同じ結果が得られました。

EDIT 2したがって、コードはjsFiddleで機能していますが、ブラウザでは機能していません。私は本当に混乱しています

EDIT 3: 多分これは何か関係があります...ページが最初にロードされたとき、送信ボタンは存在しないことに注意してください。特定の JavaScript イベントが発生したときに生成されます。

4

4 に答える 4

3

$()関数が#msg_bodyありません。次のようになります。

var receiver = $("#receiver")[0].value;
var msg_body = $("#msg_body")[0].value;

また、関数でラップする必要はありませんready。スクリプトで直接呼び出すことができます。次のように、CreateNewMessage 関数をハンドラーとして直接設定することもできます。

$(document).ready( CreateNewMessage );
于 2012-10-01T01:53:18.940 に答える
1

jQuery での値は .val() です。また、送信イベントを聞いてみませんか? 投稿を通過させたくない場合は、単純に false を返すようにします。

于 2012-10-01T01:56:32.713 に答える
0

$ の前 ("#msg_body") を逃したため、スクリプトはそこでクラッシュします。

function CreateNewMessage()
{
    var receiver = $("#receiver").value;
    var msg_body = $("#msg_body").value;
    $("#submit").click(function(event) {
        alert("it works!");
        $.post("new/", {"receiver" : receiver, "msg_body" : msg_body});
    });
}

(function() {
    $(document).ready(function() {
        CreateNewMessage();
    });
})();
于 2012-10-01T01:54:23.497 に答える
0

これを試して:

function CreateNewMessage()
{
    var receiver = $("#receiver").value;
    var msg_body = $("#msg_body").value;

    alert("it works!");
    $.post("new/", {"receiver" : receiver, "msg_body" : msg_body});
}

$(function(){
  $("#submit").click(function() {
    CreateNewMessage();
  });
});
于 2012-10-01T01:54:42.043 に答える