2013-05-23 2 views
0

한 필드에 text_fieldnumber_field을 사용하고 있습니다. 이 입력란은 question_type에 따라 달라집니다. number_fieldchrome에서 정상적으로 작동합니다. chrome에는 number 만 허용되고 mozilaIE에는 허용되지 않습니다.내 필드를 제한하려면 레일에있는 숫자 만 허용해야합니까?

모델에서 메소드를 만들려면 어떻게해야합니까? 아니면 :answer_nonumbers (1, 0.1 또는 정수가 아닌 숫자)이어야한다고 어떻게 말할 수 있습니까? 문자열을 허용해서는 안됩니다.

<% 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 %> 

은 사전에 감사합니다 당신은 형식에 정규식 수

답변

0

감사합니다. 그러나 나는 당신의 아이디어로 그것을 단순하게 만들었습니다.

validates :answer_no, numericality: true, :if => :answer_cannot_be_string? 


def answer_cannot_be_string? 
    not (question_type.in? %w{ C Y Z }) 
end 

따라서, 질문 유형별로 10 진수와 숫자를 사용할 수 있습니다. 나는 당신의 대답의 아이디어에서 그랬습니다. 그래서 저는 여러분 모두에게 +1을했습니다. 고맙습니다.

1

: 당신이 질문 유형을 정의하려면

validates :answer_no, :format => { :with => /^\d+\.?\d*$/ }

테스트 rubular

에 방법 i n 모델, 사용자 정의 유효성 검사 함수를 작성할 수 있습니다.

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 
+0

내가 같이 사용하여야한다'의 유효성을 확인 : answer_no이 : 형식 => {:와 => /^\d+??(?:\.\d{0,2})?$/} : 경우 => : answer_cannot_be_string' 모델의 메소드에 질문 유형을 정의 하시겠습니까 ?? – Vinay

+0

이것은 어색합니다. 나는'0.001'이 숫자라고 생각했지만 그렇지 않다고 말하는거야? – Gareth

+0

정규식'^ \ d + ?? (? : \. \ d {0,2})? $'는 소수점 이하 두 자리까지 허용하기 때문에 @Gareth입니다. '{0,2}' –

0

텍스트 필드에서 숫자 만 허용하는 매우 간단한 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; 
    } 

아래에 추가하고 숫자 만 허용하도록 자바 스크립트 함수를 호출하는 코드 아래에 추가합니다.

<%= f.text_field :zip, :onkeypress=> "return isNumberKey(event)"%> 
관련 문제