小编Max*_*ams的帖子

(jquery/js) - 在keyup上从字段获取文本,但是有进一步输入的延迟

大家好.我有一个表单,当各种元素发生变化时,它会被远程提交.特别是在搜索字段上,我使用密钥来检测字段中的文本何时发生变化.这个问题是当有人输入"鸡"时,表单会被提交七次,只有最后一次计数.

什么会更好是这样的

  • 检测到密钥 - 开始等待(一秒钟)

  • 检测到另一个密钥 - 重启等待时间

  • 等待完成 - 获取价值并提交表格

在我离开并编写我自己的版本之前(我真的是一个只有一点js的后端人,我用jquery来处理所有事情),是否已有现有解决方案?这似乎是一个普遍的要求.一个jquery插件可能吗?如果没有,最简单和最好的方法是什么?

谢谢,最大

更新 - 为Dan添加的当前代码(下)

丹 - 这可能是相关的.我正在页面上使用的一个jquery插件(tablesorter)需要这个文件 - "tablesorter/jquery-latest.js",如果包含它,会导致与您之前的代码相同的错误:

jQuery("input #search").data("timeout",null)未定义 http://192.168.0.234/javascripts/main.js?1264084467 第11行

也许在不同的jquery定义之间存在某种冲突?(或者其他的东西)

$(document).ready(function() {
  //initiate the shadowbox player
//  Shadowbox.init({
//    players:  ['html', 'iframe']
//  });
}); 

jQuery(function(){
  jQuery('input#search')
    .data('timeout', null)
    .keyup(function(){
      jQuery(this).data('timeout', setTimeout(function(){
          var mytext = jQuery('input#search').val();
          submitQuizForm();
          jQuery('input#search').next().html(mytext);
        }, 2000)
     )
     .keydown(function(){
       clearTimeout(jQuery(this).data('timeout'));
     });
    });
});

function submitQuizForm(){
  form = jQuery("#searchQuizzes");
  jQuery.ajax({
    async:true, 
    data:jQuery.param(form.serializeArray()), 
    dataType:'script', 
    type:'get', 
    url:'/millionaire/millionaire_quizzes',
    success: function(msg){ 
     // $("#chooseQuizMainTable").trigger("update"); 
    }
  }); 
  return …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-plugins jquery-events

14
推荐指数
2
解决办法
1万
查看次数

Rails时间戳不使用正确的时区

我对rails中的时区感到有点困惑.我希望我的rails应用程序在我的模型中的updated_at和created_at中设置的时间戳使用英国夏令时(如美国的夏令时).我改变了我的环境.rb说

  config.time_zone = 'London'
Run Code Online (Sandbox Code Playgroud)

我的应用程序所在的ubuntu服务器似乎在时间上使用BST:例如,在命令行中,如果我输入'date',我会得到当前时间(不是一小时的偏移量).在rails控制台中,我看到以下内容:

>> time = Time.now
=> Wed Oct 27 16:29:17 +0100 2010
>> time.zone
=> "BST"
Run Code Online (Sandbox Code Playgroud)

一切都很好.但是,如果我创建一个新的AR模型对象并保存它,时间戳是从一小时前开始的.所以,看起来这是使用UTC.现在,我可以看到这里的逻辑:由于时间戳可能在模型逻辑中使用,您希望它们基于不变的尺度时间,即UTC.但是,这是一个奇怪的行为,我不明白:

#change a record and save it
>> someobj.save
=> true
#object's updated_at is one hour ago
>> someobj.updated_at
=> Wed, 27 Oct 2010 15:34:22 UTC +00:00
>> Time.now
=> Wed Oct 27 16:34:31 +0100 2010
#however, Time.now - object's updated at is just a few seconds.
>> Time.now - someobj.updated_at
=> 15.305549
Run Code Online (Sandbox Code Playgroud)

因此,在进行减法之前,updated_at将转换为当前时区.

我想在当前时区显示日期的原因仅在于视图中的状态报告等:如果有人更新某些内容,我希望他们看到它在1分钟前更新,而不是"一小时前".

谁能让我不相信?干杯,最大

编辑:通过使用调整时区的'time_ago_in_words'帮助程序解决了我在状态中显示正确时间的直接问题.我仍然希望有人来解释时间戳发生了什么:)

timezone datetime ruby-on-rails

14
推荐指数
1
解决办法
1万
查看次数

我如何告诉check_box方法不为'未选中'值添加隐藏的check_box?

我正在使用rails 2.3.4,当你在form_for中的'f'对象上调用.check_box时,为'checked'值创建一个可见的复选框输入,并为'unchecked'值创建一个隐藏的复选框输入:http://railsbrain.com/api/rails-2.3.2/doc/index.html?a=M002434&name=check_box

这个问题是我在check_box上有一个validates_acceptance_of验证,如果没有检查,我得到一个包围可见复选框和隐藏复选框的field_with_errors div,以便错误消息出现两次.

在这个例子中,我不希望在'未经检查'的情况下传递一个值,所以我不希望rails添加隐藏的复选框 - 这(关闭隐藏的复选框)将解决我的问题.我无法弄清楚如何告诉它不添加隐藏的复选框.有人能告诉我吗?

我知道我可以通过制作一个check_box_tag来解决这个问题,它不会添加隐藏的"未选中"案例复选框,但是如果没有选中,我不会在复选框中包含field_with_errors.分配隐藏的领域似乎是最干净的解决方案.

谢谢 - 最多

checkbox ruby-on-rails

14
推荐指数
3
解决办法
9088
查看次数

编辑文本时,Rails控制台运行速度极慢

在我的一个rails应用程序中,当我粘贴文本,键入和(特别是)删除文本时,控制台开始运行得非常慢.我可以在顶部看到irb正在使用大量的cpu.但我不知道如何进一步诊断这个问题.它刚刚开始发生在几个星期前.我想知道它是否可能与readline/wirble相关?我用这两个.

我只是在另一个应用程序中尝试过,粘贴在一个文本块中,看起来同样糟糕 - 文本以每秒一个字符的速率出现!也许我的命令行历史已经填满了什么?我怎么能删除它?(对于rails控制台,而不是我的bash命令行历史记录)

感谢任何建议 - 最多

编辑 - 抱歉,应该提供一些系统详细信息.干得好:

System - Ubuntu 10.04
Ruby version - ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux]
Run Code Online (Sandbox Code Playgroud)

我只是尝试了简单的irb,我有同样的问题.它甚至可能更慢,在我粘贴的文本块中途停止测试时,它几乎停了下来.

我重启了很多次(我的笔记本电脑电池已经无法启动,因此无论如何我每次拔掉电源都要重新启动).

我不是一个虚拟机器人.

我最近开始使用RVM(ruby版本管理器),它似乎与此相符,尽管它可能只是巧合.有问题的控制台正在使用系统红宝石发生,但不是rvm.

这是以下输出ps aux | grep irb:

max      12583  0.0  0.0   1756   484 pts/7    S+   Apr11   0:00 sh -c irb  -r irb/completion -r "/home/max/work/rails_apps/millionaire_container/millionaire/config/environment" -r console_app -r console_with_helpers --simple-prompt
max      12584 15.9  2.7  61872 56956 pts/7    S+   Apr11 158:26 irb                                                                                                                                                                                     
max      13981 64.4  0.9  20080 18708 pts/9    R+   09:40  29:51 irb                          
max      14625 …
Run Code Online (Sandbox Code Playgroud)

ruby console ruby-on-rails

14
推荐指数
2
解决办法
2084
查看次数

"rake"运行我所有的Cucumber测试都很好,但"黄瓜"没有步骤

我继承了一个Rails(3)应用程序,并试图掌握现有的Cucumber测试.我在应用程序的'features'文件夹中有以下设置(我错过了任何不相关的文件,例如额外的功能和步骤)

/features
  /people
    new-person.feature
  /step_definitions
    people_steps.rb
    web_steps.rb
  /support
    env.rb
    paths.rb
    selectors.rb
Run Code Online (Sandbox Code Playgroud)

如果我运行'rake',它会运行features/people/new-person.feature中的所有功能,正确使用step_definitions中列出的步骤.

但是,我不想每次都运行rake因为它需要太长时间,我只想在Cucumber中运行一个特定的测试,例如 cucumber features/people/new-person.feature -l 8

当我这样做时,它运行该功能但尚未加载步骤.我得到了回报:

Using the default profile...
Feature: Add a new person
  In order to allocate tasks to people
  As a community manager
  I want to add a new person

  Scenario: Secondary navigation should contain "Add new person" # features/people/new-person.feature:8
    Given I am on the new person page                            # features/people/new-person.feature:9
      Undefined step: "I am on the new person page" (Cucumber::Undefined)
      features/people/new-person.feature:9:in `Given I am on …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails cucumber ruby-on-rails-3

14
推荐指数
1
解决办法
2420
查看次数

Git - "你的分支在3次提交之前领先于'origin/master'."

可能重复:
'git pull origin mybranch'离开本地mybranch N在原点之前提交.为什么?

我在git中获取此信息

>git status
# On branch master
# Your branch is ahead of 'origin/master' by 3 commits.
#
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)

并且,当我尝试推动时,我得到了这个:

fatal: failed to write object
error: unpack failed: unpacker exited with error code
To ssh:<my repository>
 ! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'ssh:<my repository>'
Run Code Online (Sandbox Code Playgroud)

我一直在谷歌上搜索一下,(例如这里有一个关于它的stackoverflow问题 - 'git pull origin mybranch'让本地mybranch N在原点之前提交.为什么?)并且一般的建议似乎是做拉然后一个推.但这对我不起作用 - 拉动告诉我,我是最新的.我也试过'git fetch origin'(没什么).我也尝试过:

> git remote …
Run Code Online (Sandbox Code Playgroud)

git

13
推荐指数
1
解决办法
3万
查看次数

如何从MySQL表的多个列中获取指定最小长度的所有不同单词?

在MySQL 5.6数据库,我有表tablename已经(包括人)三TEXT列:col_a, col_b, col_c

我想从这三列中提取至少5个字符的所有唯一单词(单词之间用空格分隔)。“单词”是指任何非空格字符字符串,例如“ foo-123”和“ 099423”都是单词。这些列都是utf8格式的InnoDB列。

是否有单个查询可以执行此操作?

编辑:根据要求,下面是一个示例:(在实际数据中,col_a,col_b和col_c是TEXT字段,可能包含大量单词。)

select id, col_a, col_b, col_c from tablename;

id  | col_a              | col_b          | col_c
----|--------------------|----------------|----------------------
1   | apple orange plum  | red green blue | bill dave sue
2   | orange plum banana | yellow red     | frank james
3   | kiwi fruit apple   | green pink     | bill sarah-jane frank

expected_result: ["apple", "orange", "banana", "fruit", 
                  "green", "yellow", "frank", "james", "sarah-jane"]
Run Code Online (Sandbox Code Playgroud)

我不在乎结果的顺序。谢谢!

编辑:在上面的示例中,所有内容都是小写字母,因为这就是我将所有内容存储在与该问题相关的真实表中的方式。但是,为了争辩,如果它确实包含一些大写字母,我希望查询忽略大写字母(这是我的数据库配置的设置)。

EDIT2:如果有帮助,则所有文本列上均具有FULLTEXT索引。

EDIT3:这是创建示例数据的SQL: …

regex mysql sql text

12
推荐指数
1
解决办法
328
查看次数

在ie中使用'delete'方法的jQuery.ajax问题

我有一个页面,用户可以使用按钮编辑各种内容,并选择触发ajax调用.特别是,一个动作导致一个url被远程调用,有一些数据和一个'put'请求,(因为我正在使用一个宁静的rails后端)触发我的更新操作.我还有一个删除按钮,它调用相同的URL,但有一个'删除'请求.'update'ajax调用适用于所有浏览器,但'delete'调用在IE中不起作用.我有一种模糊的记忆,在遇到这样的事情之前......任何人都可以放弃任何光明吗?这是我的ajax电话:

//update action - works in all browsers
jQuery.ajax({
  async:true, 
  data:data, 
  dataType:'script', 
  type:'put', 
  url:"/quizzes/"+quizId+"/quiz_questions/"+quizQuestionId,
  success: function(msg){ 
    initializeQuizQuestions();
    setPublishButtonStatus();
  }
});  



//delete action - fails in ie
  function deleteQuizQuestion(quizQuestionId, quizId){
    //send ajax call to back end to change the difficulty of the quiz question
    //back end will then refresh the relevant parts of the page (progress bars, flashes, quiz status)
    jQuery.ajax({
      async:true, 
      dataType:'script', 
      type:'delete', 
      url:"/quizzes/"+quizId+"/quiz_questions/"+quizQuestionId,
      success: function(msg){ 
        alert("success");
        initializeQuizQuestions();
        setSelectStatus(quizQuestionId, true);
        jQuery("tr[id*='quiz_question_"+quizQuestionId+"']").removeClass('selected');        
      },
      error: function(msg){
        alert("error:" + msg);
      }
    });     
  } …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery internet-explorer

11
推荐指数
2
解决办法
3万
查看次数

mysql查询执行时间 - 我能在几毫秒内得到这个吗?

可能重复:
如何在mysql中以毫秒或微秒为单位获取加载时间

我正在比较一些不同的方法来直接在控制台上使用mysql获取一些数据,使用SQL_NO_CACHE选项确保mysql每次都保持运行完整的查询.Mysql给我的执行时间以秒为单位,小数点后两位.我真的希望以毫秒(最好是一个或两个小数位)得到结果,以便更好地了解改进(或缺少).我可以在mysql中设置一个选项来实现这个目的吗?

谢谢,最大

mysql execution-time

10
推荐指数
1
解决办法
6257
查看次数

Rexml - 漂亮的打印文本内联和子标签缩进

我正在使用REXML构建一个xml文档,并希望以特定方式输出到文本.doc是一个CuePoint标签列表,我用Element.new和add_element生成的那些标签都拼凑成一行如下:( stackoverflow在这里将它们分成两行,但想象下面的全部是一条线):

<CuePoint><Time>15359</Time><Type>event</Type><Name>inst_50</Name></CuePoint><CuePoint><Time>16359</Time><Type>event</Type><Name>inst_50</Name></CuePoint>

当我将它们保存到文件时,我希望它们看起来像这样:

<CuePoint>
  <Time>15359</Time>
  <Type>event</Type>
  <Name>inst_50</Name>
</CuePoint>

<CuePoint>
  <Time>16359</Time>
  <Type>event</Type>
  <Name>inst_50</Name>
</CuePoint>
Run Code Online (Sandbox Code Playgroud)

我尝试将.write函数传递给值2,以缩进它们:这会产生以下结果:

xml.write($stdout, 2) 产生

<CuePoint>
  <Time>
    15359
  </Time>
  <Type>
    event
  </Type>
  <Name>
    inst_50
  </Name>
</CuePoint>
<CuePoint>
  <Time>
    16359
  </Time>
  <Type>
    event
  </Type>
  <Name>
    inst_50
  </Name>
</CuePoint>
Run Code Online (Sandbox Code Playgroud)

这是不需要的,因为它已经将空白插入到只有文本的标签内容中.即Name标签的内容现在是"\n inst_50 \n"或其他东西.这将会破坏读取xml的应用程序.

有谁知道我怎么能按照我想要的方式格式化输出文件?

感谢任何建议,最多

编辑 - 我刚刚通过另一个StackOverflow帖子在ruby-forum上找到答案:http://www.ruby-forum.com/topic/195353

  formatter = REXML::Formatters::Pretty.new
  formatter.compact = true
  File.open(@xml_file,"w"){|file| file.puts formatter.write(xml.root,"")}
Run Code Online (Sandbox Code Playgroud)

这会产生类似的结果

<CuePoint>
  <Time>33997</Time>
  <Type>event</Type>
  <Name>inst_45_off</Name>
</CuePoint>
<CuePoint>
  <Time>34080</Time>
  <Type>event</Type>
  <Name>inst_45</Name>
</CuePoint>
Run Code Online (Sandbox Code Playgroud)

CuePoint标签之间没有额外的界限,但这对我来说很好.我将这个问题留在这里以防万一其他人偶然发现它.

ruby pretty-print rexml

9
推荐指数
1
解决办法
6031
查看次数