In the view you just do this
Message (<span id='char_count' ></span > characters)<br>
<%= text_area_tag :description %>
<%= character_count('description','char_count', :frequency => 0.10) %>
And in the helper, you have a 'character_count' method.
def character_count(field_id, update_id, options = {})
function = "$('#{update_id}').innerHTML = $F('#{field_id}').length;"
out = javascript_tag(function) # set current length
out += observe_field(field_id, options.merge(:function => function)) # and observe it
end
Thanks, Mark! I modified this a little and came up with a word count using your code as a starting point. Works great! Thanks, again!
ReplyDeleteHere is the modified version that supports word count and both client and server-side validation:
http://stufftohelpyouout.blogspot.com/2009/09/rubyrails-and-javascript-word-count.html
Thanks!
ReplyDeleteI spent some time getting it to work, because of missing frequency. I would propose something like this into application_helper.rb:
def character_count(field_id, update_id, options = {})
function = "$('#{update_id}').innerHTML = $F('#{field_id}').length;"
out = javascript_tag(function) # set current length
options = {:frequency => 0.1, :function => function}.merge(options) # default options
out += observe_field(field_id, options) # and observe it
end
Then the form could look like:
<%= f.text_area(:message) %>
<span id="post_message_count"></span>
<%= character_count("post_message", "post_message_count") %>