gpt4 book ai didi

javascript - Wicket AjaxFormUpdatingBehavior 和 Javascript

转载 作者:行者123 更新时间:2023-11-30 14:40:31 24 4
gpt4 key购买 nike

我有这两个 DropDownChoice (DDC) 对象,它们工作得很好:当从第一个 DDC 选择一个元素时,第二个的列表会更新相关选择。第一个是 strumListDDC,后者是 controlListDDC。

    controlListDDC.setOutputMarkupId(true);
controlListDDC.setChoiceRenderer(new ChoiceRenderer<>("name"));
controlListDDC.add(new AjaxFormComponentUpdatingBehavior("change") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
QCControl qcc = controlListDDC.getModelObject();
lotList = QCLot.getLotsForCtrl(qcc.getId());
if (!lotList.isEmpty()) {
target.add(lotListDDC);
}
}
});

searchForm.addOrReplace(new Label("strumListLabel", "Strumento:"));
searchForm.addOrReplace(strumListDDC = new DropDownChoice<>("strumList", InstalledStrum.loadAllStrum(false)));
strumListDDC.setDefaultModel(new Model<>());
strumListDDC.add(new AjaxFormComponentUpdatingBehavior("change") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
InstalledStrum is = strumListDDC.getModelObject();
controlList = QCControl.loadQCControlPerStrumType(is.getStrumType());
lotList = new ArrayList<>();
if (!controlList.isEmpty()) {
target.add(controlListDDC);
target.add(lotListDDC);
}
}
});

出于美观的原因,我将这一点 Javascript 添加到页面模板中,我的所有 HTML 页面都源自该模板:

    $(function filtersScroll() { 
var $filters = $(".viewANfilters");
detailsPos = $filters.position().top;
$(window).on("scroll", function () {
if ($(window).scrollTop() > detailsPos)
$filters.css("position", "fixed").css("top", 0);
else
$filters.css("position", "fixed").css("top", detailsPos -$(window).scrollTop());
});
});

我通过使用 Wicket 添加了 javascript(但是如果我直接在 HTML 中插入代码,问题仍然存在,我只是为了完整性而发布):

 response.render(JavaScriptContentHeaderItem.forScript(Costants.JS_FILTERS_SCROLL, "filters_scroll"));

当我添加 javascript 时,第一个 DDC 的 onUpdate 函数永远不会被调用(使用调试器检查)。一旦我删除了 javascript,自动更新行为就会再次开始正常工作。并不是说这个 javascript 是页面的基础,没有它我仍然可以继续,但我担心当我需要添加一些重要的 javascript 时,同样的事情会再次发生。

由于我是 javascript 的新手,任何人都可以提示我是什么阻止了 AjaxFormComponentUpdatingBehavior 的工作吗?不同脚本标签之间是否存在某种冲突?最后一页还有其他的,由 Wicket 自己添加,但由于它们一直不止一个,我认为新脚本不会造成任何麻烦......

最佳答案

检查您的选择器“.viewANfilters”——如果不存在具有该类的元素,则 position() 将是未定义的,您的 JavaScript 将失败并且 Wicket 将无法注册任何事件处理程序。

关于javascript - Wicket AjaxFormUpdatingBehavior 和 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49754365/

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