【问题标题】:document ready with ui Dilaog使用 ui 对话框准备好文档
【发布时间】:2015-01-22 08:56:28
【问题描述】:

好的,我有一页加载,没有 UI 对话框。问题是因为我使用 keyup 准备好的文档。在对话框中键触发两次,在没有对话框的页面上正常触发一次。如果我删除文档就绪键功能将不起作用,在没有对话框的页面上

$(document).ready(function() {
    is_draft_started = 0;

    $(":input").keyup(function() {
        alert(33232);
        if(is_draft_started == 0) {
            s2 = setInterval('draft("' + frm_name + '")', auto_save_time);
            is_draft_started = 1;

    });

});

这是解决这个问题的一种方法吗,如果此代码在对话框中,它会自动添加一个准备好的文档,因此按键会触发两次

【问题讨论】:

  • 可以试试$(":input").off("keyup").keyup(...,如果有的话,这将删除任何keyup监听器
  • 我想出了这个 $(":input").keyup(function(e) { $( ":input" ).unbind("keyup").bind("keyup", function () { alert(33232); if(is_draft_started == 0) { s2 = setInterval('draft("' + frm_name + '")', auto_save_time); is_draft_started = 1; } }); });但是这个关闭键不会在第一个键上触发

标签: javascript jquery


【解决方案1】:

我担心的是每次 KeyUp 事件触发时, 您正在绑定一个 setInterval 以每 X 秒执行一次 因此,最终由于 Keyup 应该触发多次,您将生成十几个调用到您的后端以保存草稿...

你确定事件触发了两次并且没有冒泡吗??

你应该在你的函数中传递事件变量并使用 event.bubbles = 假; 和 event.stopPropagation() 停止进一步传播。

【讨论】:

  • this if(is_draft_started == 0) 防止绑定setInterval
  • @Haketo 它只会在第一次或每次都阻止它吗?如果我在文本框中输入“abcd”键应该至少触发 4 次...?
  • $(":input").keyup(function(e) { $(":input").unbind("keyup").bind("keyup", function() { alert( 33232); if(is_draft_started == 0) { s2 = setInterval('draft("' + frm_name + '")', auto_save_time); is_draft_started = 1; } }); });我想出了这个解决方案,它关闭了,但是 keyup 不会先触发,以后会如何处理
  • @Aukhan,是的 keyup 会触发 4 次,但第一次 is_draft_started 设置为 1。所以它会阻止第一次之后的绑定。
猜你喜欢
  • 2011-04-13
  • 1970-01-01
  • 2013-02-13
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
相关资源
最近更新 更多