2014-09-10 52 views
1

我正在試驗XForms並嘗試動態加載JavaScript,但無法弄清楚。從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中使用firstNamexf:input獲取值嗎? 我知道如何使用XForms來完成它,但這是一個概念證明。

在附註上 - 我使用XSLTForms,因此XForms在客戶端上運行。

另一個提示可能是在XSLTForms變換xf:input與一個<input type="text">元素幾個嵌套span元素的事實,但input元素沒有一個名稱或ID。

+0

您,是因爲您使用'getElementById'設定輸入的'id',不僅名字。在你的例子中:''。 – GuyT 2014-09-10 10:54:34

+0

是的,我確實設置了輸入的id。但是在嘗試嘗試錯誤時,我也在嘗試使用'getElementByName'。我做了一個編輯。感謝您的評論。 – lapadets 2014-09-10 11:06:33

+0

你究竟想要腳本做什麼?您當前的示例可以使用xf:alert完成。其他類似腳本的函數可以使用xf:bind – 2014-09-10 11:10:41

回答

1

隨着XSLTForms,也有不同的可能性...

如果您要訪問相應的HTML輸入的值,我建議document.getElementById("firstName").xfElement.input.value

您也可以使用節點屬性來獲取存儲在綁定節點中的值。

不要猶豫,用調試器瀏覽DOM來找到如何從XSLTForms中獲取東西!

--Alain

+0

就是這樣!當答案來自XSLTForms背後的人時感覺很好:)謝謝! – lapadets 2014-09-10 11:53:11