如果确认对话框为“取消”,则中止Ajax请求

时间:2011-06-19 12:00:38

标签: javascript jsf-2

我想要一个显示确认对话框的<f:ajax>组件,然后选择action时执行OK标记,如果选择Cancel则中止。 我认为这样可行,但事实并非如此(无论我在确认中选择了什么,ajax部分都会运行):

<f:ajax render="some_div">
<h:commandButton value="A Hazardous Button!"
  onclick="show_confirm()" action="#{bean.doSomething}" />
</f:ajax>

-

function show_confirm()
{
    var r=confirm("Are you sure you want to do this? This is totally hazardous!");
    if (r==true)
    {
      return true;
    }
    else
    {
      return false;
    }
}

知道为什么吗?

2 个答案:

答案 0 :(得分:3)

首先,您需要将return关键字添加到您的onclick处理程序中...尝试将onclick="show_confirm()"更改为onclick="return show_confirm()"

其次,您可以将功能简化为:

function show_confirm()
{
    return confirm("Are you sure you want to do this? This is totally hazardous!");
}

答案 1 :(得分:1)

对于JSF ajax,您可以采用以下方式。

<script>
function show_confirm()
{
  return confirm("Are you sure you want to do this? This is totally hazardous!");
}
</script>

<h:commandButton value="A Hazardous Button!" onclick="return show_confirm()">
 <f:ajax listener=#{bean.doSomething}"/>
</h:commandButton>