单击事件未在输入类型=提交时触发

时间:2012-10-01 01:51:24

标签: javascript jquery html

我显然做了一些蠢事,我看不出有什么不对劲。每当我点击“发送”按钮时,点击事件都无法触发。

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

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

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

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

4 个答案:

答案 0 :(得分:3)

您错过了$()的{​​{1}}功能,它应该是这样的:

#msg_body

此外,您不需要将var receiver = $("#receiver")[0].value; var msg_body = $("#msg_body")[0].value; 包装在函数中,您可以直接在脚本中调用它;您也可以直接将CreateNewMessage函数设置为处理程序,如下所示:

ready

答案 1 :(得分:1)

jQuery的值是.val()。另外,为什么不听提交活动?如果你不希望帖子通过,只需让它返回false。

答案 2 :(得分: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();
    });
})();

答案 3 :(得分: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();
  });
});