我有一个问题,当 return false 被执行时, Action 仍然发生。我不明白这是什么问题。
<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 函数中我可以清楚地看到警报测试被调用但 Action 仍然被触发。请指导。
最佳答案
您实际上应该从 onclick
属性内的 javascript 返回一些东西。
变化多端
onclick="javascript:statusCheck()"
到
onclick="return statusCheck()"
应该可以解决问题。我之前已经看到它(有时?)实际上需要从 onclick 的语句中返回一些东西。被调用的函数 (statusCheck()
) 返回某些内容的事实并不意味着此返回值也进一步返回到 commandButton onclick。所以它总是继续调用 Action
关于javascript - 返回 false 不起作用,单击 h :commandButton 会触发操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34354839/