【问题标题】:how to trigger on change event after ajax call如何在ajax调用后触发更改事件
【发布时间】:2015-12-08 14:36:47
【问题描述】:

我有一个 jquery datepicker 函数,它在更改 input[type="text"] 值后触发。首先请看html布局:

<input type="text" id="date_of_birth" value="" />
<table>
    <thead>
        <tr>
            <th>1st Date</th>
            <th>2nd Date</th>
            <th>3rd Date</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><input type="text" d="5" value="" /></td>
            <td><input type="text" d="6" value="" /></td>
            <td><input type="text" d="9" value="" /></td>
        </tr>
    </tbody>
</table>

实际上发生了什么,日期选择器附加到每个input[type="text"]。现在,当任何人更改#date_of_birth 输入中的日期时,它将通过添加表格的这些输入字段的d 属性中规定的天数来更改下表的input 字段的日期。如果我通过手动选择 datepicker 日期来更改 #date_of_birth,效果会很好。

但是,如果我通过从数据库(通过查询)接收出生日期来更改#date_of_birth,则#date_of_birthchange 事件不会触发,因此下表的日期不会更改。

$('body').on('click', '#selector', function() {
    $.ajax({
        url,
        data: data,
            type: "POST",
            dataType: "json",
            success: function(cbdata) {
                update_table(cbdata);
            }
    });
});

上述update_table(cbdata) 函数将出生日期插入#date_of_birth 字段。但这不能触发change event 到该输入字段。即使我在ajax调用后加上$("#date_of_birth").change(),也不能改变下表输入字段的日期。

如何在ajax调用后触发change事件,以便jquery可以自动更改下表输入字段的日期?

【问题讨论】:

  • 提供 MCVE。如何更改表格中输入字段的日期???您使用的是哪个日期选择器插件?等等……
  • 顺便说一句,如果您已经知道更新日期,为什么不直接在 ajax 请求后更新表值?听起来确实是个 XY 问题
  • @A. Wollff,这是相当大的代码块。但简而言之,date_of_birth 字段之前有一个用户列表,其中有一个用户列表及其用户 ID。当有人点击任何用户的行时,它会触发 ajax 调用,最终通过update_table 函数重现#date_of_birth 和下表。
  • @A. Wolff,我有工作代码(网站页面),但由于它处于开发阶段,我不能公开提及它的地址,因为我的网站可能存在安全漏洞(我只是在测试网站)。我不知道如何在 stackoverflow.com 中进行 PM。如果你告诉我私下发送我的网址,我可以给你造成问题的页面地址。
  • Minimal, Complete, and Verifiable example 而且,您仍然没有解释为什么不能用日期填充相关输入值而不是尝试触发事件?

标签: jquery datepicker


【解决方案1】:

触发事件的一种方法是使用jquery触发函数。

$('#date_of_birth').trigger("change");

【讨论】:

  • OP 已经说过他尝试使用$("#date_of_birth").change()
【解决方案2】:
function changeDate(){
       $.ajax({
            url,
            data: data,
                type: "POST",
                dataType: "json",
                success: function(cbdata) {
                    update_table(cbdata);
                }
        });
}
$('#selector').on('click', changeDate);

因此您可以在需要时调用 changeData()

【讨论】:

  • 或者无论如何使用$('body').on('click', '#selector', changeDate);,使用changeData()您不需要触发更改事件,只需调用函数即可。
猜你喜欢
  • 2012-11-25
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-07
  • 1970-01-01
相关资源
最近更新 更多