2016-07-07 14 views
0

は、HTMLページ内のフォームがあります:HTMLフォーム要素にScala.js "HTMLFormElement"としてアクセスするには(その上で "post()"を呼び出すために)?

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

と私は私が上

.send() 

を呼び出したい

dom.document.getElementById("mainForm") 

次経由でうまくscala.jsにそのフォームに対処することができますそれを提出するフォーム。上記から

.getElementById() 

が「要素」が「HTMLFormElement」、したがってない返ししかしながら、「送信()」「送信()」は使用できませんできません。

"HTMLFormElement"としてフォームを取得またはアクセスするにはどうすればよいですか?

答えて

2

この種の外部知識は手動で注入する必要があります。最も単純なバージョンは次のとおりです。

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

はい、それは少し汚れたのですが、それには、JavaScript/HTMLとScala.jsとの間の界面で日常起こる:JS/HTMLレベルが型なしで、Scalaのレベルが強くあるため、あなたが手動でScalaコードにあなたが何かを期待するタイプを伝える必要があります。

このようなことをたくさん行っている場合は、半自動化する方法があります(たとえば、タグを調べ、それがFORMであると判断してそれに基づいてキャストします)。より高いレベル - getElementByIdは未処理のDOM操作であり、Scala.jsは意図的にそれに追加のセマンティクスを追加しません。

(多くのScala.jsアプリでは、プログラム自体にHTMLを組み込むことでこれを回避できるため、最初から強く型付けされています)

関連する問題