Javascript 未调用onsubmit函数

Javascript 未调用onsubmit函数,javascript,function,onsubmit,Javascript,Function,Onsubmit,我在一个基于AJAX的shoutbox中设计。 这个脚本在google chrome中运行得很好,但其他浏览器的表现与我预期的不同 要发出新消息,有一个表单拥有一个输入文本字段。按enter键时,表单正在提交,因此我省略了提交按钮,因为按enter键就足够了 <form method="POST" action="" onsubmit="javascript: return shout();" enctype="multipart/form-data"> <input typ

我在一个基于AJAX的shoutbox中设计。

这个脚本在google chrome中运行得很好,但其他浏览器的表现与我预期的不同

要发出新消息,有一个表单拥有一个输入文本字段。按enter键时,表单正在提交,因此我省略了提交按钮,因为按enter键就足够了

<form method="POST" action="" onsubmit="javascript: return shout();" enctype="multipart/form-data">
<input type="text" style="width: 100%;" name="txtShout" id="txtShout" maxlength="600" autocomplete="off" title="Shout!" placeholder="Shout!">
</form>
通常,脚本应该调用shout函数,AJAX会发送一个请求来添加shout,然后返回false,这样表单就不会被提交


但在除Google Chrome之外的所有浏览器中,表单都会被提交。我在函数中添加了一个alert(),以检查它是否被调用或编码错误,但没有显示该警报。

由于某些原因,我无法使onsubmit函数在其他浏览器中工作。与其绝望地继续寻找解决方法,不如选择另一种方法。现在,我只是在文本框中添加了一个侦听器,用于在按下某个键时检查该键是否为enter键,然后调用该函数

这似乎有效,但仍然必须删除表单,否则它将被提交^^

现在我得到了这样的东西:

function shout() {
alert("test");
        // Post shout and clear textField
        if(getLength("txtShout")) {
            AjaxUpdate("./includes/shout.php?message=" + getItemValue("txtShout"), refreshShoutBox);
            setItemValue("txtShout", "");
        }

        // Stop submit
        return false;
    }
function shoutEnterListener() {
    // Get object
    var domObject = document.getElementById("txtShout");

    // Get shoutbox html code
    if(domObject) {
        domObject.onkeydown = shoutEnter;
        domObject.onkeypress = shoutEnter;
    }
}

function shoutEnter(e) {
    var keyCode;

    // Check which key has been pressed
    if (window.event) {
        keyCode = window.event.keyCode;
    } else {
        keyCode = e.which;
    }

    // If enter, shout!
    if (keyCode == 13) {
        shout();
    }
}
在init函数中调用shouttenterListener()。这也证明了根本没有编码错误,只是函数根本没有被调用


如果您仍能找到上一个问题的解决方案,请告诉我,因为这是一段有点繁琐且密集的代码。

您是否尝试过没有“javascript:”的onsubmit=“return shout();”?是的,这并不能解决问题。警报甚至没有显示,所以我猜浏览器只是跳过了onsubmit语句。。。我还尝试将该函数更改为仅警报,但它不起作用:/。在这种情况下,听起来您应该使用Firebug进行检查。您可以使用firebug的控制台来查找JavaScript错误。这只是没有提供额外的信息,函数没有被调用,没有给出错误或其他任何东西……一定有某种错误。绑定它的语法是正确的,所以它一定是JS中的某种错误,Chrome可以容忍,而其他浏览器不会(或者使用的东西只存在于Chrome中)。此外,如果有错误,它甚至可能不在该函数中,并且可能仍然会影响该函数。