【发布时间】:2020-04-06 14:11:57
【问题描述】:
当正则表达式正确时,Jquery 验证总是失败,正则表达式检查框中的文本是否与以下格式匹配:YYYY-MM-DD。尝试了所有我能找到的不同方法。使用 jquery-validation gem 并正确加载 javascript 文件,因为所有其他验证都正常工作,但它总是失败。
Javascript 文件:
$(document).on('turbolinks:load',function() {
$("#new_grand_prix").validate({
rules: {
"grand_prix[name]": {required: true},
"grand_prix[laps]": {required: true, min: 0, digits: true},
"grand_prix[country]": {required:true},
"grand_prix[date]": {required: true, correctDateForm: true},
}
});
jQuery.validator.addMethod("correctDateForm", function(value, element) {
var r = new RegExp('^\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])');
var test = r.test($('#grand_prix_date').html());
return test;
}, "Date must be in the following format: YYYY-MM-DD");
});
查看:
<script src="validate_new_grand_prix_form.js"></script>
<%= form_with(model: grand_prix, local: true, id: 'new_grand_prix') do |form| %>
<% if grand_prix.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(grand_prix.errors.count, "error") %> prohibited this grand_prix from being saved:</h2>
<ul>
<% grand_prix.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= form.label :name %>
<%= form.text_area :name %>
</div>
<div class="field">
<%= form.label :laps %>
<%= form.number_field :laps %>
</div>
<div class="field">
<%= form.label :country %>
<%= form.text_area :country %>
</div>
<div class="field">
<%= form.label :date %>
<%= form.text_area :date %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
【问题讨论】:
标签: jquery ruby-on-rails regex ruby validation