2013-08-29 87 views
4

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

我试图使用Foundation的守护进程并创建自定义命名模式,如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> 

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

任何成功使用守护进程的人都会做类似的事情(或者知道没有使用自定义命名模式的更好方法)?

干杯。

回答

5

我终于设法使它工作!

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

我错误地用/.{5,}/语法来强加一个下限。

+1

FWIW,我喜欢使用http://rubular.com来测试我的正则表达式 –

+0

这对带回车符的文本区域不起作用 – Dex

0

我不能让的JavaScript在我的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,}$' %>