2012-06-06 2 views
3

grails '<g:submitButton> 태그의 onCLick 속성에 자바 스크립트를 사용하여 유효성 검사를 구현할 수 있습니까? 한 페이지에서 다른 페이지로 진행하기 위해 웹 플로우를 사용하고 있습니다. 내가 여기에하고 싶었던 무엇grails의 유효성 검사 submitButton

   <script type="text/Javascript">      
       function isfilipinoCitizen() {  
        var selected = "${accountInfo?.filipinoCitizen}"; 
         if(selected == "1"){ 
          return true; 
         }else{ 
          alert(selected) 
          alert("You must be a Filipino citizen to register!") 
          document.location.href = "myhomepage"; 
         } 
       } 
       </script> 

다음 페이지로 진행에서 페이지를 방지하는 것입니다

<g:submitButton class="btn btn-primary" name="next" value="Next" onclick="return isfilipinoCitizen()"></g:submitButton> 

isfilipinoCitizen 기능은 내 자바 스크립트 코드에서 찾을 수 있습니다 : 여기에서 다음 버튼 내 코드입니다 사용자의 입력이 0이고 사용자를 시스템의 홈 페이지로 리디렉션합니다. 그러나 그것은 전혀 작동하지 않는 것처럼 보였다.

여러분의 도움을 매우 높이 평가합니다.

감사합니다.

+1

이 질문은 실제로 grails groovy 또는 spring과 관련이 없지만 js 형식 검증에 관한 내용입니다. – GalmWing

+0

[if-else 문으로 grails에서 submit 버튼을 사용하는 법?] (http://stackoverflow.com/questions/10891165/how-to-use-submit-button-in-grails-with-if- else-statement) –

답변

6

먼저 무엇이 실제로 html로 렌더링되는지 확인하려면 Firebug을 사용해야한다고 생각합니다. 또한 일부 자바 스크립트 오류 또는 오류로드 리소스를 발견하는 데 도움이됩니다.

두 번째로 isfilipinoCitizen()의 시작 부분에 alert('come here');을 바로 붙이면 javascript가 먼저 호출되는지 확인해야합니다. 그 후 첫 번째 조건에서 경고합니다. :) 그것을 다룰 때 자바 스크립트가 특별한 언어, 우리가주의해야합니다 :

   <script type="text/Javascript">      
       function isfilipinoCitizen() {  
        alert("come here"); 
        var selected = "${accountInfo?.filipinoCitizen}"; 
         if(selected == "1"){ 
          alert("come there"); 
          return true; 
         }else{ 
          alert(selected) 
          alert("You must be a Filipino citizen to register!") 
          document.location.href = "myhomepage"; 
         } 
       } 
       </script> 

를 마지막으로 (당신이 당신의 자바 스크립트 함수가 제대로 호출되는 것을 보장 후), 당신은 "document.location.href보다 더 많은 작업을 수행해야합니다 "양식 제출을 막기 위해. 빠른 효과를 얻으려면 jQueryonSubmit() event을 사용하는 것이 좋습니다. 태그에 onsubmit 넣어 : 당신이 순수 자바 스크립트 솔루션을 좋아한다면, 당신은 Galm와 아누 즈가 제안하는 솔루션 따를 수

<g:form name="myForm" action="myaction" onsubmit="return isfilipinoCitizen()">...</g:form> 

실패한 경우를 거짓 :

P를 반환하는 기억하시기 바랍니다/s : ${accountInfo?.filipinoCitizen}을 자바 스크립트에 직접 삽입해도 문제가 없지만 좋은 방법은 아닙니다. "isFilipinoCitizen"매개 변수로 JavaScript 함수를 전송하는 것이 좋습니다.

다른 사용자 의견 : 등록 할 수있는 사용자가 누구인지 이미 알고있는 경우 사용자가 모든 양식을 작성하여 필리핀 시민이어야 등록 할 때까지 기다려야하는 이유는 무엇입니까? 이전에 사용자에게 알림이 표시되지 않는 이유는 무엇입니까?

+0

네,이 조언에 많은 감사를드립니다! :) – chemilleX3

2

대신 onsubmit을 시도하십시오.

<g:submitButton class="btn btn-primary" name="next" value="Next" onsubmit="return isfilipinoCitizen()"></g:submitButton> 

그리고 당신의 함수 반환 true 또는 false에서

.

+0

정말 고마워요! 그러나 제안을 구현 한 후에도 아무런 변화가 없었지만 유효성 검증을 통과하지 않은 후에도 다음 페이지로 진행됩니다. – chemilleX3

+3

submitButtom –

+1

@AnujArora가 올 바르지 않고 onsubmit 처리기가 form 태그에 연결되어야합니다.둘 이상의 제출 버튼이있을 수 있으며 그 중 하나에'onsubmit' 속성을 잊지 않을 것입니다. – vegemite4me

관련 문제