4

是否可以使用 javascript 创建验证以在 grails<g:submitButton>标记的 onCLick 属性上实现?我正在使用 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');其次,您应该首先检查是否调用了 javascript,方法是在 isfilipinoCitizen() 的开头放置一个权利。之后,在第一个条件下发出警报。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() 事件。如果你喜欢纯 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>  

并在您的函数中返回truefalse

于 2012-06-06T02:10:36.627 回答