4

我在 Rails 应用程序中使用基础,我正在寻找一种方法来验证表单中文本字段的长度:我想在文本字段包含太多字符时显示错误(但不是在它为空时) )。

我尝试使用 Foundation 的 abide 并按照文档中的说明创建自定义命名模式。

以下是我的application.js文件的内容,包括 Foundation 初始化时的自定义模式:

$(function(){ 
  $(document)
    .foundation()
    .foundation('abide', {
      patterns: {
        short_field: /^.{,40}$/,
        long_field: /^.{,72}$/
      }
    }); 
});

这是我在视图中的表单代码:

<form data-abide>
  <div class="long-name-field">
    <input type="text" pattern="long_field" placeholder="Long Field">
    <small class="error">Too long.</small>
  </div>
  <div class="short-name-field">
    <input type="text" pattern="short_field" placeholder="Short Field">
    <small class="error">Too long.</small>
  </div>
</form>

问题是,当我加载表单页面时,所有字段总是显示错误消息,无论它们是空的、填充的字符数限制还是超出字符数限制。

任何人成功地使用 abide 来做类似的事情(或者知道不使用自定义命名模式的更好方法)?

干杯。

4

2 回答 2

5

我终于设法让它工作了!

问题是这/^.{,40}$/不是有效的正则表达式语法,您必须/^.{0,40}$/明确使用。

我把它误/.{5,}/认为是你可以用来强加一个下限的语法。

于 2013-08-30T14:20:58.257 回答
0

我无法让 javascript abide 在我的 Rails 4 应用程序中工作,所以我只是直接将正则表达式添加为属性,如下所示:

<%= text_area_tag 'answer', @current_answer,
        :placeholder => 'required', :required => '', :pattern => '^(.){0,1000}$' %>

仅用于验证最小长度,我使用:

<%= text_area_tag 'answer', @current_answer,
        :placeholder => 'required', :required => '', :pattern => '^(.){100,}$' %>
于 2016-06-06T23:14:29.420 回答