2011-02-23 2 views

답변

1

레일즈는 제출 될 때까지 양식의 상태를 알지 못하지만이 경우 도움이 될 자바 스크립트를 추가 할 수 있습니다.

$('#header > a').click(function(){ 
    $('input').each(function(i){ 
    if ($(this).attr(value) != '') { 
     if (confirm('are you sure you want to leave this form unfinished?') != 'true) { 
     alert('quitter!); 
     } 
    } 
    }); 
}); 

편집 : (당신이 당신의 질문에 지정 등)에만 헤더 링크 클릭을 처리하도록 좋아, 여기 onbeforeunload 사용하는 솔루션입니다. 전체 페이지 소스 나는 당신에 구축 뭔가주는거야 확인하기 위해 그것을 테스트하기 때문에 : 물론

<html> 
    <head> 
    <title>Foo</title> 
    <script> 
     window.onbeforeunload = function(){ 
     var inputs = document.getElementsByTagName('input'); 
     var unfinished = 'false'; 
     for (var i=0; i<inputs.length; ++i) { 
      if (inputs[i].value != '') { 
      unfinished = 'true'; 
      } 
     } 
     if (unfinished == 'true') { 
      return 'Are you sure you want to leave?'; 
     } 
     } 
    </script> 
    </head> 
    <body> 
    <form> 
     <input name='foo'/> 
     <input type='submit'/> 
    </form> 
    <a href='/'>Leave</a> 
    </body> 
</html> 

이이 레일 특정 헬퍼되지 않습니다,하지만 당신은 뱉어 자신의 도우미를 작성할 수 당신의 견해에 이것과 비슷한 것을 담은 스크립트 태그. 빈칸에 대한 모든 입력을 검사하는 것보다는 양식 별 검사를 넣는 것이 좋습니다. 내가 만든 모든 형태는 어떤 형태로든 아름답고 독특한 눈송이였습니다.

+0

레일즈에서는 아무것도 사용하지 않습니다. 플러스는 버튼과 같은 다른 것을 클릭하는 것을 설명하지 않습니다. 나는 폼 태그 도우미처럼 레일스가 초기 페이지 언로드를 막기 위해 일부 JavaScript 코드를 생성하도록 지정하는 것과 같은보다 우아한 솔루션을 찾고있었습니다. – Amy

+0

@Amy Rails 3은 UJS를 사용하며 특정 기능을 제공하기 위해 JavaScript 드라이버 [이 드라이버] (https://github.com/rails/jquery-ujs/blob/master/src/rails.js#files)에 의존합니다. Rails는 더 이상 실제로 헬퍼에서 JavaScript 코드를 생성하지 않습니다. 여러분이 찾고자하는 것과 가장 가까운 것은'

'와 같은 또 다른 속성을 폼에 전달하고 일부 JavaScript를 사용하여 해당 속성 세트가있는 폼을 찾은 다음 사용하는 것입니다. Unixmonkey의 솔루션입니다. –

관련 문제