使用foundation abide来验证文本字段的长度?

时间:2013-08-29 10:22:24

标签: javascript ruby-on-rails zurb-foundation

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

我尝试使用Foundation的abide并创建自定义命名模式,如docs中所述。

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

$(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>

问题在于,当我加载表单页面时,所有字段始终显示错误消息,无论它们是空的,是否在字符限制下填充或超出其字符限制。

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

干杯。

2 个答案:

答案 0 :(得分:5)

我终于成功了!

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

我误以为/.{5,}/语法可以用来强加一个下限。

答案 1 :(得分:0)

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

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

为了验证最小长度,我只使用:

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