gpt4 book ai didi

更改事件后的 Javascript 回调具有部分页面刷新

转载 作者:行者123 更新时间:2023-11-30 17:41:35 24 4
gpt4 key购买 nike

我正在使用一个 Web 框架,该框架使用部分页面呈现来使用输入字段的更改事件刷新屏幕的一部分。我无权访问更改事件的函数,但我可以注入(inject) jquery 来为该字段添加我自己的更改事件。不幸的是,该字段在部分页面渲染中也被刷新。

我正在尝试注入(inject)我自己的代码来为页面的那部分添加一些样式。不幸的是,$(document).ready 只在开始时触发一次,所以当部分页面刷新发生时,我的代码丢失了。

如果我使用 $(document).change 或直接附加到输入字段的更改事件,我的代码会在框架更改和部分页面刷新之前触发,因此也会丢失。

所以我唯一可以开始工作的就是等待 3 秒的回调,然后再次应用我的代码。然而,这非常难看,在慢速机器上有时需要超过 3 秒。

有什么方法可以将回调附加到部分页面刷新后触发的更改事件。

该框架使用非常古老的 Web 标准(表格布局),而且它的许多更改函数也倾向于返回 false。不确定这是否会阻止任何进一步的传播,也就是说阻止我的回调。

这是输入元素:

<input id="N24:MiscRt1:0" title="Miscellaneous Rate 1" class="xa" onchange="_uixspu('DefaultFormName',1,'DynCalcUpd','MiscRt1',0,1,{'_FORM_SUBMIT_BUTTON':'_fwkActBtnName_MiscRt1_DynCalcUpdYAS-AIio','evtSrcRowId':'AllocationsAM.AllocationsPlanVO321831001-132183-321838243CWBASG8243CWBPERFAPPRAISALOSCgK_CA','DynCalcUpdCol':'Misc1ValUGoCYJgF','evtSrcRowIdx':'06cW78OeE'});return true;" name="N24:MiscRt1:0" size="10" type="text" value="0.00" maxlength="38">

这是我试过的代码:

function xxcwb_func() {
$('span#CompTable table.x1n:nth-child(1) tbody tr td input').on('click', function(e) {
e.stopPropagation();
});
$('span#CompTable table.x1n:nth-child(1) tbody tr td select').on('click', function(e) {
e.stopPropagation();
});
$('span#CompTable table.x1n:nth-child(1) tbody tr td').on('click', function() {
if ($(this).hasClass('xxcwb_highlight')) {
$(this).parent().find('td').css('background', '#f2f2f5');
$(this).parent().find('td').removeClass('xxcwb_highlight');
}
else {
$(this).parent().parent().find('td').css('background', '#f2f2f5').removeClass('xxcwb_highlight');
$(this).parent().find('td').css('background', '#97cbf6');
$(this).parent().find('td').addClass("xxcwb_highlight");
}
});
addSeparator('Current Salary');
addSeparator('Proposed Increase Amount');
addSeparator('PDD New Salary');
addSeparator('Proposed Salary');
addSeparator('LM New Salary');
addSeparator('HR New Salary');
addSeparator('CEO New Salary');
addSeparator('Current Car Benefit');
addSeparator('Current Total Cash');
}

$(document).ready(function() {
// Run our code.
xxcwb_func();
});

$(document).change(function() {
xxcwb_func();
});

回调还必须等待其他更改函数和部分页面刷新先完成。

最佳答案

$(document).change(function() {
window.setTimeout(xxcwb_func,0);
});

这会将它推送到浏览器的 TODO 列表(在第二个参数中指定截止日期),它将在部分页面刷新发生后开始执行。

关于更改事件后的 Javascript 回调具有部分页面刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20965828/

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