是否可以使用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,则阻止页面进入下一页,并将用户重定向到系统的主页。但它似乎根本不起作用。
非常感谢你们的任何帮助。
谢谢!
答案 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”以防止表单提交。为了快速起见,我建议jQuery和onSubmit() 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>
在您的函数中返回true
或false
。