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();
});

它仍然没有正确发送请求,并且控制台没有记录错误。我尝试使用提交事件而不是上面代码中的单击事件,但得到了相同的结果。

编辑 2 所以代码在 jsFiddle 上运行,但不在我的浏览器中。我真的很困惑

编辑3:也许这与它有关......请注意,最初加载页面时提交按钮不存在。它是在特定的 javascript 事件触发时生成的。

4

4 回答 4

3

您缺少$()for 的功能#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

你错过了 $ before ("#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 回答