JavaScript不能在onsubmit事件上运行

时间:2013-07-12 17:59:14

标签: javascript html onsubmit

要了解网络编程,我正在尝试一个简单的html / javascript / php"产品搜索"页。这是index.php文件:

<html>
    <head>
        <title>Product Search</title>
        <script type="text/javascript">
            function mySubmit() {
                alert("submitting...");
                var product_type = $('product_type').value;
                $.post('product_search.php', { product_type: product_type }, function (data) {
                    alert("result = " + data); 
                    $('body').html(data);
                }
                return false;
            }
        </script>
    </head>
    <body id="body">
        <script type="text/javascript">
            mySubmit();
        </script>
        <form class="form" id="myform" method="post" onsubmit="javascript:return mySubmit();">
            Product Type:
            <input id="product_type" type="text" name="product_type"/>
            <br/><br/>
            <input id="submit" type="submit" value="Submit"/>
        </form>
    </body>
</html>

并且product_search.php文件非常小:

<?php


$product_type = $_POST["product_type"];
echo "<h1>$product_type</h1>";

?>

问题是似乎永远不会为表单调用onsubmit事件。我认为这是一个JavaScript问题(例如,不允许运行),但是如果我在调用alert事件时运行mySubmit()而不是调用onsubmit,它就可以了!

另外,我认为应该运行<body id="body">下的JavaScript是错误的吗?它永远不会运行。

所以,对于那些没有读过所有内容的人:为什么我的JavaScript函数在onsubmit事件被触发时没有运行?

2 个答案:

答案 0 :(得分:3)

运行代码时出现以下解析错误:

Uncaught SyntaxError: Unexpected token return

Uncaught ReferenceError: mySubmit is not defined 

您错过了)来电的结束$.post,这打破了解析器。解决之后,在引用jQuery之前,您将收到$ is undefined错误。

http://jsfiddle.net/Z6hJK/

答案 1 :(得分:0)

<script type="text/javascript">
            mySubmit();
        </script>

调用上面的函数但调用它时,即使是document.getElementById('product_type')。value也会给出错误(可能无法在浏览器上启用),因为product_type结果为null,因为javascript在正文中在浏览器完全呈现页面之前执行。它被调用的那一刻,还没有呈现product_type。

单击也会调用您的函数,但这次可能会失败,因为您没有引用Jquery。包括一个。