2011-09-05 15 views
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> 
    ) 
) 

答えて

2

それをシンプルに保つために望んでいた、そしてonclickの、のonblurているようです

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

あなたが#を使用したい場合は、あなたが実行する必要があります:

あなたのIDが正しくないためトリガされません、あなたはこのような #の文字を削除する必要があります
my_id_var = "some_text_{nb}" 
<div id=#{my_id_var}>...</div> 

違いがありますか?

+0

違いがわかります。実際には、textidとdividの値から#を取り除きます。それがなぜそのように機能するのか? – Chris

+0

これがOpaか、(調査される)イベントハンドラを無視するウェブブラウザであるかどうかわかりませんが、 – Fred

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) 

NB:そこのdiv上のonclickを入れて問題はありませんが、私はあなたのようなコードを使用してテストしている

+0

jlogのみをデバッグに使用;) – Fred

関連する問題