从Wicket Java进行JavaScript函数调用时失败
我在Wicket Java代码中调用JavaScript时遇到了问题。我有一个表单,有两个文本字段,一个按钮和一个隐藏字段。我想连接文本字段的文本,并在单击按钮时使用JavaScript将连接的文本设置为隐藏字段
这是我的密码:
爪哇:
Form form = new Form("field");
form.setOutputMarkupId(true);
TextField textField1 = new TextField("field1");
textField1.setOutputMarkupId(true);
form.add(textField1);
TextField textField2 = new TextField("field2");
textField2.setOutputMarkupId(true);
form.add(textField2);
HiddenField hiddenField = new HiddenField("hiddenField");
hiddenField.setOutputMarkupId(true);
form.add(hiddenField);
Button concatButton = new Button("concat");
concatButton.add(new SimpleAttributeModifier("onclick", "concat"));
form.add(concatButton);
JavaScript:
<script type="javascript">
function concat() {
var val1=document.getElementById("field1").value;
var val2=document.getElementById("field2").value;
document.getElementById("hiddenField").value=val1+val2;
}
</script>
但它不起作用。任何信息都会对我很有帮助。多谢各位
注意:我也尝试过AjaxSubmitButton
,但这给了我一个错误
# 1 楼答案
或者
最好像下面这样做
https://cwiki.apache.org/WICKET/calling-javascript-function-on-wicket-components-onclick.html
# 2 楼答案
我以这种方式解决了这个问题,因为在我的情况下,上述过程都不起作用,这可能是因为我的页面结构:
它成功了。谢谢你帮我
# 3 楼答案
TextField.setOutputMarkupId()
将使组件打印id
属性,但默认情况下,id属性与组件id(总是在构造函数中传递的第一个字符串参数)不同,而是生成的id属性试试这个:
而且,如果不在服务器端使用TextFields的值(仅使用hiddenField值),也无法将其添加为Wicket组件,而将其保留为静态HTML(具有固定ID)
[通过示例进行编辑以提高清晰度]
另一个选项是使用生成的ID生成脚本(或函数调用):
主页。爪哇
主页。html
下面是一个使用Ajax实现这一点的示例(concat操作在服务器上完成,而不是在javascript中完成):
主页。爪哇
主页。html