gpt4 book ai didi

javascript - 瓦丁 : How to trigger change events by javascript?

转载 作者:行者123 更新时间:2023-11-30 17:21:47 27 4
gpt4 key购买 nike

我有一个 TextField 组件并在其上添加了 ValueChangeListener。

@Theme("myTheme")
@SuppressWarnings("serial")
@Title("VaadinTest")
@PreserveOnRefresh
@JavaScript({ "vaadin://js/jquery/jquery-1.10.1.min.js", "vaadin://js/test.js" })
public class HelloWorldUI extends UI {

@Override
protected void init(VaadinRequest request) {
final VerticalLayout layout = new VerticalLayout();
final TextField txtName = new TextField();
txtName.setId("test");
txtName.setImmediate(true);
txtName.addValueChangeListener(new ValueChangeListener() {

@Override
public void valueChange(final ValueChangeEvent event) {
System.out.println(txtName.getValue());
}
});
layout.addComponent(txtName);

Button btnOK = new Button("OK");
btnOK.addClickListener(new ClickListener() {

public void buttonClick(ClickEvent event) {
Page.getCurrent().getJavaScript().execute("doSomething()");

}
});
layout.addComponent(btnOK);

setContent(layout);
}
}

在我的 js 文件 (test.js)

function doSomething() {
$('input#test').val("John").change();
}

但我从来没有得到 ValueChangeEvent ,我的意思是我从来没有得到文本 John 的控制台日志。

我错过了什么?或者是否可以通过 javascript 触发组件的事件?

最佳答案

不幸的是,JQuerys .trigger().change() 函数在 vaadin 版本 7.2 之后不再工作。

我不确定它是 Jquery 还是 Vaadin Bug。可能是一个 Jquery 错误。

但是,您必须使用 native javascript 函数 .dispatchEvent()

  com.vaadin.ui.JavaScript.getCurrent().execute(
"var field = document.getElementById('test');" +
"field.dispatchEvent(new Event('change'));"
);

关于javascript - 瓦丁 : How to trigger change events by javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25033754/

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