0

我正在研究ajax。
浏览器是谷歌浏览器。
当我点击提交时,我的浏览器没有提示确定,而是提交了表单。这里有什么问题?

    <html>
    <head>
    <script type="text/javascript" src="/cp/scripts/jquery-1.7.2.js"></script>
    <script language="javascript">
    $("#test").submit(function(){
    //$.post("test.php", this.serialize());
    alert('ok');
    return false;
    });
    </script>
    </head>
    <body>
    <form id="test">
    <input type="text" name="name">
    <input type="submit">
    </form>
    </body>
    </html>
4

2 回答 2

8

执行脚本时尚未定义表单。将其包装在一个$().ready事件中:

$(document).ready(function() {
    $("#test").submit(function() {
    //$.post("test.php", this.serialize());
    alert('ok');
    return false;
    });
});

我可以看到以下问题:“什么未定义?”。
是的:

...
# Hey, a script tag, let's wait, and load the resource.
<script type="text/javascript" src="/cp/scripts/jquery-1.7.2.js"></script>

# Hey a script tag!
<script language="javascript">
$("#test").submit(function(){
//$.post("test.php", this.serialize());
alert('ok');
return false;
});
</script>
# The script block has ended, let's parse the script
# ... *calls* $('#test'). ....

# Now, #test is defined. Too late...
<form id="test">
# ...
于 2012-04-12T15:01:35.870 回答
1

首先,确保函数正在执行document.ready,然后不要忘记阻止submit事件的默认行为:

$(document).ready(function() {
    $("#test").submit(function(evt){
        evt.preventDefault();
        alert('ok');
        return false;
    });
});

在 Chrome中的jsFiddle上测试。

于 2012-04-12T15:07:36.187 回答