【问题标题】:Javascript async returnJavascript异步返回
【发布时间】:2012-06-04 04:17:59
【问题描述】:

我在我的应用程序中使用 JSF ajax(我们无法更改 =\),我们需要等待用户的操作。我的意思是,在调用 ajax 方法之前,我需要询问用户是否要使用自定义对话框恢复页面中的所有更改。如果他想继续并恢复,我将通过 ajax 调用 Java 方法,但如果不是,我们不需要调用 ajax。

让我尝试更具体:

这是我的大页面恢复按钮的代码:

<h:commandButton value="#{msg.revertBtn}" accesskey="R" styleClass="actionButton" action="#{styleController.revertChanges}">

    <f:ajax execute="@this" onstart="return method();" render="styleCcFormtyleCcTable">

</h:commandButton>

在调用 ajax 之前,它将运行我的 javascript 函数:method()

我需要让用户停留在method(),直到他在我的自定义确认对话框中单击YesNow 按钮,然后返回真或假。

知道怎么解决吗?

【问题讨论】:

    标签: java javascript ajax jsf customdialog


    【解决方案1】:

    您需要挂钩按钮的onclick 处理程序,以便能够通过在其中相应地返回truefalse 来阻止按钮的默认操作。 ajax 请求一旦执行完毕,就已经来不及阻止了。

    这是一个使用 JavaScript 的内置 confirm() 函数的启动示例。

    <h:commandButton ... onclick="return confirm('Are you sure?')">
        <f:ajax execute="@this" render="styleCcFormtyleCcTable" />
    </h:commandButton>
    

    【讨论】:

    • 似乎更好,但我需要使用自己的确认对话框。有什么方法可以调用 click 方法并执行以下操作: 和 button.click 检查我是否已经点击并调用ajax?这似乎是一种解决方法,但我会让它工作,这是目前的优先事项。谢谢
    【解决方案2】:

    我知道你们中的一些人不会同意我的观点,因为我做了一个巨大的解决方法来让它工作。

    我所做的是:

    我创建了一个自定义确认对话框,它有一个存储用户回复的变量。然后,每当用户点击按钮时,它就会被存储在那里。

    所以,在按钮中,我添加了一个单击函数来检查我的变量,如果它有任何回复,它就会去做一些事情,但我不会调用我的自定义对话框。

    在我的自定义对话框中,我正在“单击”按钮,但现在有了回复。之后,您需要确保您将擦除该变量。

    就是这样。 2天这样做o.O如果你们需要代码,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      • 2014-06-23
      • 2011-09-06
      • 2016-08-25
      • 2019-10-23
      • 1970-01-01
      • 2012-05-04
      相关资源
      最近更新 更多