2

したがって、フィールドをクリックすると、データベースからの最新のデータがフィールドにあることを確認し、フォームフィールドを離れると、テキスト領域が保存されるフォームを作成するために使用している次のコードがあります。データベース。display() 関数のフォームには、機能する他の多くのフィールドが既にあります。ただし、これは私が使用している最初のデータベース フィールドであり、リスト(文字列) であるため、それらを処理する方法を見つけようとしています。これを実行すると、html はすべて正しく表示され、フィールドのイベントも表示されます。ただし、display_lp で生成されたフィールドは、onclick または onblur イベントを発生させません。理由はありますか?

display_lp(path) = (
  List.mapi(
    x, characterlp ->     textid = "#edit_content_lp_{x}"
    divid = "#show_content_lp_{x}"
   <div class="show_content" id={divid} onclick={_ -> edit_lp(path, x) }>
        {x+1}:
        <textarea class="edit_content" id={textid} cols="20" rows="1" onblur={_ -> save_lp(path,x) } >
            {characterlp}
        </textarea>
    </div>
    , /characters[path]/lifepaths)
)

display(path) = (
   Resource.styled_page("{path}'s character sheet",["/resources/css.css"],
              /* a bunch of other irrelevant html *?
            <div class="show_content" id=#show_content_lp> Lifepaths:  { display_lp(path) }
            </div>
            <a href="..">Back to Directory</a>
      )
)
4

2 に答える 2

2

あなたのようなコードでテストしましたが、ID が正しくないため、onclick、onblur がトリガーされないようです。次の#ような文字を削除する必要があります。

  textid = "edit_content_lp_{x}"
  divid = "show_content_lp_{x}"

ただし、 を使用する場合は、次のよう#にする必要があります。

my_id_var = "some_text_{nb}"
<div id=#{my_id_var}>...</div>

違いがわかりますか?

于 2011-09-06T08:44:21.543 に答える
0

これは、テキストエリアでonclick、onblurを使用する方法を示す最小限のコードです。

do_click(_event) =
  jlog("CLICK: {Dom.get_value(#tt)}")

do_blur(_event) =
  jlog("BLUR: {Dom.get_value(#tt)}"

main() =
  <textarea id=#tt
            onclick={do_click}
            onblur={do_blur)}>Hello</textarea>

server = Server.one_page_bundle("OpaTest", [], [], main)

注意:divにonclickを配置しても問題はありませんが、シンプルに保ちたいと思いました。

于 2011-09-06T08:26:36.890 に答える