执行return false时我遇到问题仍然是动作发生。我不明白这是什么问题。
<h:commandButton value="Deny" style="margin-left: 5px;" id="button"
action="#{myController.submitRequest('deny', 'return')}"
onclick="javascript:statusCheck();"/>
JS代码:
function statusCheck()
{
var msgArray = [];
var validate = true;
var status= document.getElementById('userValue:statusId');
if(status.value.trim() == "")
{
msgArray.push("Status required");
alert("check");
validate = false;
}
alert("after check");
alert(validate);
if(validate) {
return true;
}
else
{
if(msgArray.length >0)
{
alert(msgArray.join('\n'));
alert("test");
return false;
}
}
}
现在在上面的JS函数中我可以清楚地看到警报测试被调用但仍然触发了动作。请指导。
答案 0 :(得分:5)
您实际上应该从onclick
属性中的javascript 返回。
如此改变
onclick="javascript:statusCheck()"
到
onclick="return statusCheck()"
应该做的伎俩。我之前看到它(实际上是?)实际上需要从onclick中的语句中返回一些内容。调用函数(statusCheck()
)返回某些内容的事实并不意味着此返回值也会进一步返回到commandButton onclick。所以它总是继续调用动作
答案 1 :(得分:-1)
将 onclick="javascript:statusCheck()"
更改为 onclick="javascript:statusCheck(); return false;"