Rails 4 - 设置文本区域的字符数限制

Rails 4 - Setting character count limit on textarea

本文关键字:字符 区域 置文本 Rails      更新时间:2023-09-26

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

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

undefined method `each' for nil:NilClass

。此外,它还列出了一堆参数亚达。我知道这与我的 user.rb 验证有关。

因此,作为测试,当我从user.rb文件中删除验证时:

validates :description, length: { maximum: 400 }

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

所以我的目标是我想设置它,所以我键入类型类型,计数器计数,一旦我达到 400,我就不能再输入了。

这可能吗?我想保持这么简单,而不是试图在我的文本区域旁边添加消息,例如"您已达到极限"或其他什么。我的想法是,这样当用户尝试保存并且计数器显示任何 401/400 时,我就不会遇到此错误消息问题,因为他们无法键入超过 400 的内容。

这足够简单吗?这是我现在拥有的:

在我的用户.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>

和我的表单字段:

<%= 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>

任何帮助将不胜感激。

是的,这是可能的。

您需要为客户端文本区域验证执行此操作:文本区域字符限制

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

validates :description, length: { maximum: 400 }