返回false不工作,单击h:commandButton会触发操作

时间:2015-12-18 11:39:29

标签: javascript jsf

执行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函数中我可以清楚地看到警报测试被调用但仍然触发了动作。请指导。

2 个答案:

答案 0 :(得分:5)

您实际上应该从onclick属性中的javascript 返回

如此改变

onclick="javascript:statusCheck()"

onclick="return statusCheck()"

应该做的伎俩。我之前看到它(实际上是?)实际上需要从onclick中的语句中返回一些内容。调用函数(statusCheck())返回某些内容的事实并不意味着此返回值也会进一步返回到commandButton onclick。所以它总是继续调用动作

答案 1 :(得分:-1)

onclick="javascript:statusCheck()" 更改为 onclick="javascript:statusCheck(); return false;"