验证grails submitButton

时间:2012-06-06 01:48:50

标签: grails button spring-webflow-2

是否可以使用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,则阻止页面进入下一页,并将用户重定向到系统的主页。但它似乎根本不起作用。

非常感谢你们的任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:8)

首先,我认为您应该使用Firebug来检查实际呈现为html的内容。它还有助于发现一些javascript错误或无法加载资源。

其次,你应该首先在isfilipinoCitizen()的开头放置一个alert('come here');来检查是否首先调用了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函数会更好。

另一种可用性思路:如果您已经知道哪个用户有权注册,为什么我们必须等到用户填写所有表格,告诉他们必须是菲律宾公民才能注册?为什么之前没有通知用户(页面加载后)?

答案 1 :(得分:2)

请尝试onsubmit

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

在您的函数中返回truefalse