4

<g:submitButton>grails のタグの onCLick プロパティに実装する JavaScript を使用して検証を作成することは可能ですか? あるページから別のページに進むために Webflow を使用しています。次のボタンのコードは次のとおりです。

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

isfilipinoCitizen 関数は、私の JavaScript コードにあります。

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

ここでやりたかったのは、ユーザーからの入力が 0 の場合にページが次のページに進まないようにし、ユーザーをシステムのホームページにリダイレクトすることです。しかし、それはまったく機能していないようでした。

皆さんからの助けは大歓迎です。

ありがとう!

4

2 に答える 2

8

まず、Firebugを使用して、実際に html としてレンダリングされるものを確認する必要があると思います。また、一部の JavaScript エラーやリソースの読み込みに失敗したことを発見するのにも役立ちます。

alert('come here');次に、 isfilipinoCitizen() の先頭に権利を配置して、JavaScript が最初に呼び出されるかどうかを確認する必要があります。その後、最初の状態でアラート。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>

最後に (JavaScript 関数が適切に呼び出されることを保証した後)、フォームが送信されないようにするために、「document.location.href」以上のことを行う必要があります。迅速な効果のために、jQueryonSubmit() eventをお勧めします。純粋な JavaScript ソリューションが好きな場合は、Galm と Anuj が提案するソリューションに従うことができます: onsubmit をタグに入れます:

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

失敗した場合は、false を返すことを忘れないでください :)

P/s: ${accountInfo?.filipinoCitizen}JavaScript に直接挿入するとうまくいくかもしれませんが、ベスト プラクティスではありません。「isFilipinoCitizen」をパラメーターとして javascript 関数に転送する方が適切です。

別のユーザビリティの考え: どのユーザーが登録する権利を持っているかを既に知っている場合、ユーザーがすべてのフォームに記入するまで待たなければならないのはなぜですか? なぜユーザーは前 (ページの読み込み後) に通知されないのですか?

于 2012-06-06T07:11:45.870 に答える
2

onsubmit代わりに試してください。

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

そして、あなたの関数でtrueorを返しますfalse

于 2012-06-06T02:10:36.627 に答える