Javascript调用函数函数不起作用

时间:2016-03-15 02:23:58

标签: javascript jquery function

我正在尝试创建一个非常简单的聊天系统,自动刷新并刷新用户提交的新聊天消息。

我目前有两个功能 - 一个用于提交新消息,清除表单并刷新聊天(使用下一个功能),名为clearchat()

function clearchat() {
    var frm = document.getElementById('chatform');
    document.getElementById('fullmessage').value = document.getElementById('chatmsg').value;
    frm.submit(); // form is being submitted to a hidden iframe.
    frm.reset();
    refreshchat();
}

然后另一个刷新应该在clearchat()运行时调用的聊天,并且还使用间隔每3秒调用一次:

function refreshchat() {
    $('#qcwindow').load(document.URL +  ' #qctext');
    $('#chatwindow').load(document.URL +  ' #chattext');
    var chatwindow = document.getElementById('chatwindow');
    var difference = chatwindow.scrollHeight - chatwindow.scrollTop;
    if(difference < 750) {
        chatwindow.scrollTop = chatwindow.scrollHeight;
    }
}

此功能将新的聊天信息加载到DIV中,然后将其保持滚动到div的底部,除非用户已手动滚动离开div的底部。

这两个功能都是单独的。我遇到的问题是,当用户提交新消息时,它 提交表单并清除表单,但它刷新聊天。但是,聊天仍会每3秒自动刷新一次。但我希望用户的新消息能够立即显示出来。

我无法弄清楚为什么refreshchat()函数中的clearchat()函数没有被调用。

任何帮助将不胜感激。感谢。

更新:

我已将console_log("refrehsed")添加到refreshchat()函数中,并且每次通过手动点击输入以及自动刷新都会将其添加到日志中,但div仅在自动刷新时实际更新。

1 个答案:

答案 0 :(得分:2)

当您将表单提交给iframe时,您应该在更新UI之前等待帖子完成。您可以通过收听表单所针对的iframe的加载事件来知道表单已完成提交。