2016-07-07 15 views
0

有在HTML頁面的表單:如何訪問一個HTML表單元素作爲Scala.js「HTMLFormElement」(爲了調用「post()」)?

<form id="mainForm"> 
    <input type="text"> 
    </input> 
</form> 

,我可以解決形式scala.js就好了通過

dom.document.getElementById("mainForm") 

接下來,我想打電話給

.send() 

提交表單。然而,「發送()」不可用作

.getElementById() 

從上方返回一個「元素」不是「HTMLFormElement」,因此,「發送()」是不可用的。

如何獲取/訪問表單「as」「HTMLFormElement」?

回答

2

總之,這類外部知識必須手動注入。最簡單的版本是:

dom.document.getElementById("mainForm").asInstanceOf[HTMLFormElement] 

是的,這是一個有點蹩腳,但它在的JavaScript/HTML和Scala.js之間的接口通常發生的情況:由於JS/HTML水平是類型化的,和Scala級強烈鍵入,您必須手動告訴Scala代碼您期望的是什麼類型。

如果你正在做這種事情很多,有辦法半自動化它(例如,檢查標籤,確定它是一個FORM,並基於此做演員),但這有點兒更高級別 - getElementById是一個原始的DOM操作,而Scala.js故意不會爲其添加額外的語義。

(很多Scala.js應用,以避免這種通過建立在程序本身的HTML,所以從一開始它是強類型。)

相關問題