2011-10-09 129 views
2

我设计了一个基于AJAX的留言箱。 http://businessgame.be/shoutbox.phponsubmit函数没有被调用

该脚本在google chrome中完美运行,但其他浏览器并不像我所期望的那样行事。

要发出一条新消息,有一个表单拥有一个输入文本字段。当按下回车键时,表单正在提交,所以我没有提交按钮,因为按下回车键就足够了。

<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> 

喊功能如下:

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

通常情况下,脚本应该叫喊声功能,AJAX将发送添加的喊了一声,这样的形式不返回错误的请求得到提交。

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

+0

你有没有试过onsubmit =“return shout();”没有'javascript:'? – Corbin

+0

是的,这并不能解决问题。警报甚至没有显示,所以我猜浏览器只是跳过onsubmit声明... 我也尝试将函数更改为仅警报,但它不起作用:/。 –

+0

在这种情况下,听起来像你应该用Firebug检查它。您可以使用Firebug的控制台来查找JavaScript错误。 – Corbin

回答

1

那么,出于某种原因,我无法在其他浏览器中使用onsubmit函数。而不是拼命地继续寻找解决它决定去一个不同的方法。现在,我只是在文本框中添加了一个监听器,以检查是否按下了一个键,然后调用该函数。

这似乎工作,仍然不得不删除表格,因为否则它会得到提交^^。

所以,现在我得到这样的:

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

的shoutEnterListener()被调用初始化函数。这也证明,没有任何编码错误,但纯粹是没有被调用的函数。

如果您仍然可以找到上一个问题的解决方案,请告诉我,因为这是一个乏味和密集的代码。