Jquery RubyonRails(3.2+;)-更新a<;p>;文本区域后的标记';s OnChange事件

Jquery RubyonRails(3.2+;)-更新a<;p>;文本区域后的标记';s OnChange事件,jquery,ruby-on-rails,events,textarea,Jquery,Ruby On Rails,Events,Textarea,我是RubyonRails的初学者,目前正在railstutorial.org上学习教程。我目前正试图将jQuery与RubyonRails结合使用,但似乎遇到了问题 在我的网站上,用户可以创建类似于他们在Twitter上发布的帖子,并且每个帖子有140个字符的限制。我创建了一个段落标记,用于显示用户可以输入的剩余字符数,但我似乎无法确定如何设置和更新段落标记的值。我想我需要处理textarea的OnChange事件。在事件处理程序中,我将获得textarea文本的长度,从140中减去它,然后将

我是RubyonRails的初学者,目前正在railstutorial.org上学习教程。我目前正试图将jQuery与RubyonRails结合使用,但似乎遇到了问题

在我的网站上,用户可以创建类似于他们在Twitter上发布的帖子,并且每个帖子有140个字符的限制。我创建了一个段落标记,用于显示用户可以输入的剩余字符数,但我似乎无法确定如何设置和更新段落标记的值。我想我需要处理textarea的OnChange事件。在事件处理程序中,我将获得textarea文本的长度,从140中减去它,然后将该值分配给p标记的innerHTML,以最终显示用户可以键入的字符数

您可以在下面看到我的页面的Ruby on Rails代码:

<%= form_for(@micropost) do |f| %>
<%= render 'shared/error_messages', object: f.object %>

<div class="field">
    <%= f.text_area :content, placeholder: "Compose new micropost..." %>
</div>

<p id="charsremaining" style="text-align: right"></p>

<%= f.submit "Post", class: "btn btn-large btn-primary" %>
我相信我正在用上述代码监视textarea的OnChange事件。通过这样做,每当用户在textarea字段中键入时,就会检测到更改,并且p标记会自动更新为正确的剩余字符数。问题是我的JavaScript代码根本不起作用。我已将上述JavaScript代码保存到以下文件:/app/assets/javascripts/microspost.js

我认为该文件将由资产管道处理,但我不确定管道是否真的识别了它。此外,我不确定我的JavaScript代码是否适合我的具体情况

任何帮助都将不胜感激。很抱歉我发了这么长的邮件


编辑[已解决]:
结果我在其他地方找到了答案,所以:。见第一个答案

但是对于那些好奇到底出了什么问题的人来说,我没有听jQuery中的document.ready事件。我想我假设RubyonRails已经包含了它。下面是我的最后一段JavaScript代码(仍然保存为/app/assets/javascripts/micropost.js):


您在
段落=$('charsremaining')行中遗漏了
#
符号。感谢您指出这一点。我在中添加了#符号,但不幸的是,它仍然没有解决问题。结果我在其他地方找到了答案,所以:。见第一个答案。但是对于那些好奇到底出了什么问题的人来说,我没有听jQuery中的document.ready事件。我想我假设RubyonRails已经包含了它。我用新的JavaScript代码编辑了我的问题。
$('#micropost_content').change(function() {
textbox = $(this);
charsleft = (140 - textbox.val().length);

paragraph = $('charsremaining');
paragraph.innerHTML = charsleft + " characters remaining."; });
function UpdateCharsRemaining()
{
    var textbox = $('#micropost_content');
    var charsleft = (140 - textbox.val().length);

    var paragraph = $('#charsremaining');

    var text = charsleft + (charsleft != 1 ? " characters" : " character") + " remaining";

    paragraph.text(text);
}

$(document).ready(function($)
{
    UpdateCharsRemaining();

    $('#micropost_content').change(UpdateCharsRemaining);
    $('#micropost_content').keydown(UpdateCharsRemaining);
    $('#micropost_content').keyup(UpdateCharsRemaining);
});