rot*_*sch 3 javascript wicket autocomplete textfield
我的 AutoCompleteTextField(getChoices 方法实现并工作):
AutoCompleteTextField<String> objectDescription = new AutoCompleteTextField<String>("objectDescription") {
getChoices() {...}
}
Run Code Online (Sandbox Code Playgroud)
我添加到这个文本字段:
objectDescription.add(new OnChangeAjaxBehavior()) {
onUpdate() {....}
}
Run Code Online (Sandbox Code Playgroud)
onUpdate
每次我在文本字段中写入内容时都会调用该方法,但当我从自动完成菜单中选择某个项目时不会调用该方法。菜单中的字符串将写入文本字段,但仅在进行其他更改时才调用 onUpdate。
编辑:在 Wicket 1.5 之前,这是有效的。
添加一个AjaxFormComponentUpdatingBehavior("onchange")
.
将OnChangeAjaxbehavior()
在每一次改变(使用的JavaScript似乎火Wicket.ChangeHandler
),像每一个按键。
使用 anAjaxFormComponentUpdatingBehavior
会将事件侦听器添加到onChange
javascript 事件,例如将焦点移出具有不同值的文本字段,或从自动完成列表中选择一个值。
仍然不确定为什么不OnChangeAjaxbehavior extends AjaxFormComponentUpdatingBehavior
从 继承这个逻辑AjaxFormComponentUpdatingBehavior
,一定有什么东西被覆盖了。
更新这很可能是onchange
使用 .js 时忽略 javascript 事件的原因OnChangeAjaxBehavior
。Wicket.ChangeHandler
在 wicket-ajax.js 中找到的 的源代码为不同的事件设置处理程序:
onchange
事件处理程序onchangeoriginal
:obj.onchangeoriginal = obj.onchange
Run Code Online (Sandbox Code Playgroud)
onchange
事件处理程序分配给onKeyUp
、onpaste
和oncut
。onchange
事件处理程序分配给onInput
。最后,它总是删除onchange
事件处理程序:
obj.onchange = function(event){
Wicket.stopEvent(event);
}
Run Code Online (Sandbox Code Playgroud)中的代码wicket-autocomplete.js
似乎是onchange
在项目选择时手动触发事件处理程序。可能应该先检查一下obj.onchangeoriginal
。
因此,作为在 .js 中执行的这个 js OnDomReady
,我怀疑是否有可能使这两种行为共存。也许是时候提交新的 JIRA 了?
这可能是一个稍微相关的问题:WICKET-2424: OnChangeAjaxBehavior + DatePicker do not work together
归档时间: |
|
查看次数: |
4691 次 |
最近记录: |