我正在使用text_field
和number_field
作为一个字段。此字段更改取决于所选的question_type
。 number_field
在chrome
中正常运行。它仅接受number
中的chrome
,而不接受mozila
和IE
中的:answer_no
。
如何在模型中创建方法或如何判断numbers
应该只是<% if question_type == 'C' %>
<%= f.text_field :answer_no %>
<% elsif (question_type == 'T') and (question_type == 'F') and (question_type != 'C') and (question_type != 'Y') and (question_type != 'Z') %>
<%= f.number_field :answer_no %>
<% end %>
(1,0.1,或任何不是整数的数字)。它不应该接受字符串。
{{1}}
提前谢谢
答案 0 :(得分:1)
您可以使用格式正则表达式:
validates :answer_no, :format => { :with => /^\d+\.?\d*$/ }
测试 rubular
如果要在模型中的方法中定义问题类型,可以编写自定义验证函数:
class Model < ActiveRecord::Base
validate :check_question_type
protected
def check_question_type
if question_type == ....
validates :answer_no, :format => { :with => /^\d+\.?\d*$/ }
else
validates :answer_no,
:presence => true
end
end
end
答案 1 :(得分:1)
这是一个非常简单的JavaScript函数,只接受文本字段中的数字。
添加以下JavaScript功能
<script type="text/javascript">
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
alert("Please Enter Only Numeric Value:");
return false;
}
return true;
}
并添加以下代码以调用JavaScript函数以仅接受数字。
<%= f.text_field :zip, :onkeypress=> "return isNumberKey(event)"%>
答案 2 :(得分:0)
感谢Ideas的朋友们。但是我的想法很简单。
validates :answer_no, numericality: true, :if => :answer_cannot_be_string?
def answer_cannot_be_string?
not (question_type.in? %w{ C Y Z })
end
因此,它接受问题类型的小数和数字。我从你的答案的想法做了。所以我给你们两个+1。谢谢。