给web application(rails) 添加快捷键

Posted by wxianfeng Wed, 17 Nov 2010 03:45:00 GMT

测试环境:ruby1.8.7 + rails 2.3.5 + firefox + chrome

今天在看redmine源码的时候,发现了很多这样的代码:

<p><%= f.text_area :text, :cols => 100, :rows => 25, :class => 'wiki-edit', :accesskey => accesskey(:edit) %></p>

对于 :accesskey => accesskey(:edit) 参数没有明白,之前没用过,goolge下,果然不错,原来是快捷键,rails已经封装了,用的是prototype.js

常见用法:

<%= submit_tag("Save and Refresh", :accesskey => "r") %>

按下 alt+shift+r 你的表单就提交了

<%= f.text_area :text, :cols => 100, :rows => 25, :class => 'wiki-edit', :accesskey => ‘e’ %>

按下 alt+shift+e 光标就定位到 textarea了

另外上面redmine里封装了一个helper方法来定义快捷键,可以来看下,很简单

application_helper.rb:

 def accesskey(s)
Redmine::AccessKeys.key_for s
end

access_keys.rb:

module Redmine
  module AccessKeys
    ACCESSKEYS = {:edit => 'e',
                  :preview => 'r',
                  :quick_search => 'f',
                  :search => '4',
                  :new_issue => '7'
                 }.freeze unless const_defined?(:ACCESSKEYS)
                 
    def self.key_for(action)
      ACCESSKEYS[action]
    end
  end
end

see:
http://stackoverflow.com/questions/2075093/ruby-on-rails-keyboard-shortcuts