gpt4 book ai didi

ajax - ajax调用后处理onclick函数

转载 作者:行者123 更新时间:2023-12-04 13:05:20 25 4
gpt4 key购买 nike

我试图在提交表单(ajax 调用)后选择并关注所选的组件 ID。

<script>
var myFunc = function() {
document.getElementById('form:#{bean.componentId}').focus();
document.getElementById('form:#{bean.componentId}').select();
};

$(document).ready(function() {
myFunc();
});
</script>

<h:form id="form">
<h:commandButton action="#{bean.save}" onclick="return myFunc();" ...>
<f:ajax execute="@form" render="@form"/>
</h:commandButton>
...
</h:form>

此解决方案有效,但问题是 <f:ajax>被称为 AFTER onclick ,因此在组件选择后呈现表单,并清除焦点。

如何在呈现表单后调用我的函数?

更新: (例如我试过)
  • 添加 onevent="myFunc();"f:ajax => 导致刷新页面
  • 添加 onevent="myFunc()"f:ajax => 与 onclick 相同的行为属性
  • 下一个 f:ajaxonevent属性。 => 还是一样

  • 更新 2 (它应该如何工作):
  • 提交按钮被称为 ajax
  • 根据需要清理表格
  • 适当的领域是重点(取决于一些用户选择的因素)
  • 最佳答案

    onevent handler 实际上会被调用三次,它应该指向一个函数名,而不是函数本身。一次是在ajax请求发出之前,一次是在ajax响应到达之后,一次是在HTML DOM更新成功时。您应该检查 status给定数据参数的属性。

    function listener(data) {
    var status = data.status; // Can be "begin", "complete" or "success".

    switch (status) {
    case "begin": // Before the ajax request is sent.
    // ...
    break;

    case "complete": // After the ajax response is arrived.
    // ...
    break;

    case "success": // After update of HTML DOM based on ajax response..
    // ...
    break;
    }
    }

    在您的特定情况下,您只需要检查状态是否为 success .
    function myFunc(data) {
    if (data.status == "success") {
    var element = document.getElementById('form:#{bean.componentId}');
    element.focus();
    element.select();
    }
    }

    并且您需要通过其名称引用该函数:
    <f:ajax ... onevent="myFunc" />

    关于ajax - ajax调用后处理onclick函数<f :ajax>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13540298/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com