【问题标题】:Return false not working and action gets triggered on click of h:commandButton返回 false 不起作用,并在单击 h:commandButton 时触发操作
【发布时间】:2015-12-18 11:39:29
【问题描述】:

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

【问题讨论】:

    标签: javascript jsf


    【解决方案1】:

    您实际上应该返回来自 onclick 属性内的 javascript 的某些内容。

    所以改变

    onclick="javascript:statusCheck()"
    

    onclick="return statusCheck()"
    

    应该可以解决问题。我以前见过它(有时?)实际上需要从 onclick 的语句中返回一些东西。被调用的函数 (statusCheck()) 返回某些内容这一事实并不意味着该返回值也会进一步返回给 onclick 的 commandButton。所以它总是继续调用动作

    【讨论】:

    • 精彩的解释!
    猜你喜欢
    • 2012-10-18
    • 1970-01-01
    • 2012-10-17
    • 2017-08-20
    • 2012-07-09
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    相关资源
    最近更新 更多