我在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>
问题在于,当我加载表单页面时,所有字段始终显示错误消息,无论它们是空的,是否在字符限制下填充或超出其字符限制。
任何成功使用过的人都会做类似的事情(或者知道一种不使用自定义命名模式的更好方法)?
干杯。
答案 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,}$' %>