From 987d9dbf31b6bb4fe1547bca17af920aa3d72ac5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 31 Dec 2005 04:31:10 +0000 Subject: Added JavaScriptHelper#button_to_function that works just like JavaScriptHelper#link_to_function but uses a button instead of a href [DHH] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3367 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_view/helpers/javascript_helper.rb | 14 ++++++++++++++ actionpack/test/template/javascript_helper_test.rb | 5 +++++ 3 files changed, 21 insertions(+) (limited to 'actionpack') diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 33eb676c25..37f9965fa8 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Added JavaScriptHelper#button_to_function that works just like JavaScriptHelper#link_to_function but uses a button instead of a href [DHH] + * Added that JavaScriptHelper#link_to_function will honor existing :onclick definitions when adding the function call [DHH] * Added :disable_with option to FormTagHelper#submit_tag to allow for easily disabled submit buttons with different text [DHH] diff --git a/actionpack/lib/action_view/helpers/javascript_helper.rb b/actionpack/lib/action_view/helpers/javascript_helper.rb index 3be96db001..d61167b264 100644 --- a/actionpack/lib/action_view/helpers/javascript_helper.rb +++ b/actionpack/lib/action_view/helpers/javascript_helper.rb @@ -58,6 +58,20 @@ module ActionView ) end + # Returns a link that'll trigger a JavaScript +function+ using the + # onclick handler. + # + # Examples: + # button_to_function "Greeting", "alert('Hello world!')" + # button_to_function "Delete", "if confirm('Really?'){ do_delete(); }") + def button_to_function(name, function, html_options = {}) + html_options.symbolize_keys! + tag(:input, html_options.merge({ + :type => "button", :value => name, + :onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function};" + })) + end + # Includes the Action Pack JavaScript libraries inside a single