2011-04-09 5 views
0

내 웹 응용 프로그램에 대한 일부 자바 스크립트 유효성 검사를 만들려고합니다. 스크립트가 항상 유효성 검사를 위해 무언가를 찾는 것을 원하지 않는다는 점을 제외하고는 모두 잘 돌아갑니다.Ruby 및 sinatra와 javascript 네임 스페이스 사용하기

내가 유효성을 검사하려는 두 가지 사항이 있지만 동일한 페이지에 나타나지 않는다고 가정 해 보겠습니다. 그들은 '/page1''page2'에 있습니다. 그리고 나는 page1에 대한 유효성 검사기가 page2에서 실행되는 것을 원하지 않습니다.

개체 리터럴을 통해 가능해야합니까? 이 같은 뭔가 :

var validations = 
{ 
    page1validation : 
    { 
     init : function() 
     { 
      // validation page 1 
     } 
    } 
    page2validation : 
    { 
     init : function() 
     { 
      // validation page 2 
     } 
    } 
} 

그래서 나는 validations.page1validation.init() 같은 이러한 검증 메소드를 호출 할 필요가 있고 난 내가 검증을 필요로하는 형태가 각 HAML보기에서 인라인 자바 스크립트와 함께이 작업을 수행 할 수있는 것 같아요.

%form{:action => ""} 
    %input{:type => "text"} 
    %input{:type => "submit", :value => "save"} 
:javascript 
    $(function() { 
    validations.page1validation.init(); 
    }); 

그러나 더 나은 해결책이 있어야합니다. 지금 당장은 생각할 수 없습니다. 그렇다면 유효성 검사기가 항상 유효성 검사를 시도하지 않도록하려면 어떻게해야할까요?

아, 그리고 내 레이아웃 파일의 맨 아래에있는 자바 스크립트를 넣으면 작동하지 않습니다 자바 스크립트 인라인 ...

답변

0

가장 간단한 방법은 당신이 원하는 것을 할 수는와 중, 양식 다른 만드는 것입니다 다른 ID 또는 클래스.

그런 다음 유효성 검사를 통해 각 양식을 "대상"으로 설정할 수 있습니다. 이 접근법에서는 추가 "네임 스페이스"가 필요하지 않습니다. 대신, 당신은 이와 같은 것을합니다.

$(function() { 
    page1validation(); 
    page2validation(); 
}); 

function page1validation() { 
    var form = getElementById('form1'); // form1 is the first form 
    if(!form) then return; 

    // .. perform validations in form 1 
} 
function page2validation() { 
    var form = getElementById('form2'); 
    if(!form) then return; 

    // .. perform validations in form 2 
} 

또한, 나는 jQuery 같은 JS 라이브러리 학습에 시간을 투자 할 수 조언을 것입니다. 이 코드는 위의 코드를 훨씬 더 작게 만들 수있는 내장 메서드를 제공합니다.