【发布时间】:2014-11-03 23:47:32
【问题描述】:
我正在试验 XForms 并尝试动态加载 javascript,但无法弄清楚。
我正在展示一个简单的示例 - 这只是一个加载 javascript 的输入字段和按钮:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:ev="http://www.w3.org/2001/xml-events" >
<head>
<title>Hello World in XForms</title>
<xf:model>
<xf:instance xmlns="">
<data>
<firstName/>
</data>
</xf:instance>
</xf:model>
<script type="text/javascript">
var myFunction = function(){
var name = document.getElementById("firstName").value;
alert("Hello " + name + "!");
}
</script>
</head>
<body>
<xf:label>Please enter your first name: </xf:label>
<xf:input ref="firstName" id="firstName">
</xf:input>
<br />
<xf:trigger>
<xf:label>Click me!</xf:label>
<xf:action ev:event="DOMActivate">
<xf:load resource="javascript:myFunction()" />
</xf:action>
</xf:trigger>
</body>
</html>
所以在我的脚本中,我试图从输入框中获取值,然后显示一个带有连接字符串的警报框。目前,我得到“Hello undefined!”
您知道如何使用 Javascript 从 firstName xf:input 获取值吗?
我只知道如何使用 XForms 来做到这一点,但这是一种概念证明。
附带说明 - 我正在使用 XSLTForms,因此 XForms 在客户端上运行。
另一个提示可能是 XSLTForms 将 xf:input 转换为具有 <input type="text"> 元素的多个嵌套 span 元素,但 input 元素没有名称或 ID。
【问题讨论】:
-
您必须设置输入的
id,而不仅仅是名称,因为您使用的是getElementById。在您的示例中:<xf:input ref="firstName" name="firstName" id="firstName">. -
是的,我实际上设置了输入的
id。但在我的反复试验中,我也在试验getElementByName。我做了一个编辑。感谢您的评论。 -
您实际上希望脚本做什么?您当前的示例可以使用 xf:alert 来实现。其他类似脚本的功能可以使用 xf:bind 来实现
-
我想用javascript获取
xf:input的值。我知道它可以单独使用 XForms 来实现,但正如我所说 - 这是一个实验,我很好奇如何做到这一点。
标签: javascript xforms xsltforms