如何以Scala.js“HTMLFormElement”(为了在其上调用“post()”)访问HTML表单元素?

时间:2016-07-07 11:47:01

标签: forms scala scala.js

HTML页面中有一个表单:

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

我可以通过

在scala.js中解决这个问题
dom.document.getElementById("mainForm")

接下来我想打电话

.send()

在表单上提交。但是,“send()”不可用作

.getElementById()

从上面返回“Element”而不是“HTMLFormElement”,因此“send()”不可用。

如何以“HTMLFormElement”形式获取/访问表单?

1 个答案:

答案 0 :(得分:2)

总的来说,这种外部知识必须手动注入。最简单的版本是:

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

是的,这有点蹩脚,但它通常发生在JavaScript / HTML和Scala.js之间的接口上:由于JS / HTML级别是无类型的,并且Scala级别是强类型的,因此您必须手动告诉Scala代码你期望的东西是什么类型。

如果你正在做很多这样的事情,有办法半自动化它(例如,检查标签,确定它是一个FORM并根据它进行演员),但这有点高-level - getElementById是一个原始的DOM操作,Scala.js故意不向它添加额外的语义。

(许多Scala.js应用程序通过在程序本身中构建HTML来避免这种情况,因此它从一开始就是强类型的。)