Rails 4 - 设置textarea的字符数限制

时间:2015-03-08 00:14:33

标签: javascript ruby-on-rails-4 limit charactercount

我有一个描述字段,我想限制为400个字符。现在我可以输入文本,计数器显示[current-count] / 400,我可以保存并且一切正常,只要我在400限制范围内。

现在我也可以输入超过400的限制,然后现在当我点击保存时我收到错误:

undefined method `each' for nil:NilClass

...加上它列出了一堆参数yadda。我知道这与我的user.rb验证有关。

所以只是作为测试,当我从 user.rb 文件中删除验证时:

validates :description, length: { maximum: 400 }

页面保存我是否低于或超过限制而没有任何错误消息。但我知道我需要验证。

所以我的目标是设置这个,所以我输入类型类型,计数器就像它一样,一旦我达到400,我就不能再打字了。

这可能吗?我想保持它这么简单,而不是试图在我的textarea旁边添加消息,比如“你已达到极限”或其他什么。我的想法是这样,当用户尝试保存并且计数器显示任何401/400时,我不会出现此错误消息问题,因为它们只能输入400以上。

这很简单吗?这就是我现在所拥有的:

在我的user.rb中:

validates :description, length: { maximum: 400 }

在我的视图文件中,我有以下JAVASCRIPT(还包括计数的回车):

<script type="text/javascript">
    $(document).ready(function() {
        $('#char-count').html($('#counted').val().length);
    });

    $('#counted').keyup(function() {
        $('#char-count').html($(this).val().length);
    });
    $('#char-count').html($('#counted').val().replace(/\n/g, "\n\r").length);
    $('#char-count').html($(this).val().replace(/\n/g, "\n\r").length)
</script>

我的FORM FIELD:

<%= f.label :description, class: "col-sm-3 control-label" %>
<%= f.text_area :description, class: "form-control", id: "counted", rows: 6 %>
<p>Current character count: <span id="char-count">0</span> / 400</p>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。

您需要为客户端textarea验证执行此操作:textarea character limit

您还希望在user.rb中保留您的验证,以确保保存的描述不超过400个字符:

validates :description, length: { maximum: 400 }