gpt4 book ai didi

javascript - Wicket 1.5 自动完成文本字段 onUpdate 行为未调用

转载 作者:行者123 更新时间:2023-11-29 10:22:49 25 4
gpt4 key购买 nike

我的 AutoCompleteTextField(getChoices 方法已实现并正在运行):

AutoCompleteTextField<String> objectDescription = new AutoCompleteTextField<String>("objectDescription") { 
getChoices() {...}
}

我在这个文本字段中添加:

objectDescription.add(new OnChangeAjaxBehavior()) {
onUpdate() {....}
}

onUpdate 方法在每次我在文本字段中写入内容时都会被调用,但在我从自动完成菜单中选择某个项目时不会被调用。菜单中的字符串被写入文本字段,但仅在进行另一项更改时调用 onUpdate。

编辑:在 Wicket 1.5 之前,这是可行的。

最佳答案

添加一个 AjaxFormComponentUpdatingBehavior("onchange")

OnChangeAjaxbehavior() 似乎在每次更改时触发(使用 Javascript Wicket.ChangeHandler),就像在每次按键时一样。

使用 AjaxFormComponentUpdatingBehavior 会将事件监听器添加到 onChange javascript 事件,例如将焦点移出具有不同值的文本字段,或从自动完成中选择一个值列表。

仍然不确定为什么 OnChangeAjaxbehavior extends AjaxFormComponentUpdatingBehavior 没有从 AjaxFormComponentUpdatingBehavior 继承这个逻辑,一定有它覆盖的东西。

更新 这可能就是为什么在使用 OnChangeAjaxBehavior 时忽略 onchange javascript 事件的原因。 Wicket.ChangeHandler 的源代码位于 wicket-ajax.js 中,为不同的事件设置处理程序:

  • 备份 onchangeoriginal 中的 onchange 事件处理程序:
obj.onchangeoriginal = obj.onchange
  • 如果浏览器是 IE、Safari 和其他浏览器,它将原始的 onchange 事件处理程序分配给 onKeyUponpaste切入
  • 如果不是,它将原始的onchange 事件处理程序分配给onInput
  • 最后,它总是删除 onchange 事件处理程序:

    obj.onchange = function(event){
    Wicket.stopEvent(event);
    }

wicket-autocomplete.js 中的代码似乎在项目选择时手动触发 onchange 事件处理程序。可能它应该首先检查 obj.onchangeoriginal

因此,由于此 js 在 OnDomReady 中执行,我怀疑是否有可能使这两种行为共存。也许是时候提交一个新的 JIRA 了?

这可能是一个稍微相关的问题:WICKET-2424: OnChangeAjaxBehavior + DatePicker do not work together

关于javascript - Wicket 1.5 自动完成文本字段 onUpdate 行为未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8047769/

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