从 XForms 操作调用 javascript

Posted

技术标签:

【中文标题】从 XForms 操作调用 javascript【英文标题】:Call javascript from XForms action 【发布时间】: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 转换为具有 &lt;input type="text"&gt; 元素的多个嵌套 span 元素,但 input 元素没有名称或 ID。

【问题讨论】:

您必须设置输入的id,而不仅仅是名称,因为您使用的是getElementById。在您的示例中:&lt;xf:input ref="firstName" name="firstName" id="firstName"&gt;. 是的,我实际上设置了输入的id。但在我的反复试验中,我也在试验getElementByName。我做了一个编辑。感谢您的评论。 您实际上希望脚本做什么?您当前的示例可以使用 xf:alert 来实现。其他类似脚本的功能可以使用 xf:bind 来实现 我想用javascript获取xf:input的值。我知道它可以单独使用 XForms 来实现,但正如我所说 - 这是一个实验,我很好奇如何做到这一点。 【参考方案1】:

使用 XSLTForms,有不同的可能性...

如果你想访问相应 HTML 输入的值,我建议document.getElementById("firstName").xfElement.input.value

您还可以使用节点属性来获取存储在绑定节点中的值。

不要犹豫,使用调试器浏览 DOM,了解如何从 XSLTForms 获取内容!

--阿兰

【讨论】:

就是这样!当答案来自 XSLTForms 背后的人时感觉很好:) 谢谢!

以上是关于从 XForms 操作调用 javascript的主要内容,如果未能解决你的问题,请参考以下文章

JavaScriptJS跨域

操作 Xforms 重复集合。视图和模型很容易不同步

XForms 和 restxq 应用程序

JavascriptJs同步异步以及回调函数

javascriptjs操作json方法总结(json字符创转换json对象)

零基础快速掌握JavaScriptjs工作原理对象