我在一个基于AJAX的shoutbox中设计。 http://businessgame.be/shoutbox.php
该脚本在谷歌浏览器中完美运行,但其他浏览器的行为并不像我期望的那样。
要喊出新消息,有一个拥有输入文本字段的表单。当按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>
喊叫功能如下:
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;
}
通常,脚本应该调用shout函数,AJAX会发送一个添加shout的请求,然后返回false,这样表单就不会被提交了。
但是除了Google Chrome之外的所有浏览器,无论如何都会提交表单。我在函数中放入一个alert()来检查它是否被调用或编码错误,但警报没有显示。
答案 0 :(得分:1)
好吧,出于某种原因,我无法让onsubmit功能在其他浏览器中运行。而不是拼命地寻求修复它决定采取不同的方法。现在我只是在文本框中添加了一个监听器,以检查按键是否为Enter键,然后调用该函数。
这似乎有效,但仍然必须删除表单,因为否则它将被提交^^。
所以现在我得到了这样的东西:
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函数中调用shoutEnterListener()。这也证明了没有任何编码错误,但纯粹根本没有被调用的功能。
如果您仍然找到上一个问题的解决方案,请告诉我,因为这是一个有点乏味和密集的代码。