当前位置: 首页 > 面试题库 >

Ajax调用后处理onclick函数

庄飞
2023-03-14
问题内容

提交表单(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:ajaxoneventattr。=>还是一样

update2 (应如何工作):

  • 提交按钮被称为ajax
  • 根据需要清洁表格
  • 重点关注适当的领域(取决于某些用户选择的因素)

问题答案:

onevent处理程序实际上将被调用三次,它应该指向一个函数名,而不是函数本身。在发送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" />


 类似资料:
  • 到目前为止,我做到了: 我的Ajax1函数返回ajax对象。我的等待函数看起来像这样: 问题是第二个ajax请求函数(Ajax2)并没有等待等待函数!编辑:我也试过: 什么也没变。从jQuery文档: 在将多个延迟对象传递给jQuery.when的情况下,该方法将从新的“master”返回promise“延迟对象,跟踪已传递的所有延迟的聚合状态。当所有延迟被解决时,该方法将立即解决其主延迟,或者当

  • 问题内容: 我有一个正在构建的自滚动MVC框架,到目前为止,已经设法避免了任何AJAX调用的需要。但是,现在,我想创建一个实时更新提要。 我的问题是,通常将Ajax调用的处理程序存储在MVC中的什么位置?我应该将它们存储在进行呼叫的同一控制器中吗? 例如,如果我的域名www.example.com/browse/blogs(浏览器是控制器,博客是方法)正在对更新后的博客列表进行AJAX调用,则该调

  • 问题内容: 我知道在香草js中,我们可以做到 在ReactJS中调用onClick的两个函数等效于什么? 我知道调用一个函数是这样的: 问题答案: 将两个函数调用包装在另一个函数/方法中。这是该想法的几个变体: 1)分开的方法 或使用ES6类: 2)内联 或等效于ES6:

  • 问题内容: 我要实现的目标 我有一些要展示的作品。所以,我有这些的缩略图。当访客单击缩略图时,我希望打开一个div(称为slickbox)并显示标题,说明和有关所单击作品的滑块。 我已经完成的工作以及如何 从数据库中获取工作数据。这是我的作品清单的一小部分: index.php 如您所见,我有一个ul标签,其中每个作品都包含li标签。每个li标签获取数据库中工作的ID,每个li标签包含h3标签和p

  • 问题内容: 我有这个功能: 我的页面使用最喜欢的按钮加载内容,但是在Ajax调用并生成其他新内容后,单击新内容的按钮时该功能不起作用。有什么不对吗? 问题答案: 那是因为您正在使用动态内容。 您需要将点击调用更改为委托方法,例如 要么

  • 目前,我正在使用一个控制器来获取所有数据,并将其放置在视图类中的foreach语句中。因此,每当加载页面时,它都会执行此函数。为了实现这一点,我使用了如下方法: 控制器类: 查看类别: 但是现在我希望页面加载得更快,因此只有当用户单击该特定的select2语句时,我才希望加载下拉列表。我尝试了以下代码来获取具有选择2功能的select2变量,即通过下拉列表获取输入文本,但都不起作用。它只是在我的页