2011-09-05 1 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 :이 사업부에 온 클릭을 넣어 아무 문제가 없다,하지만 난 당신과 비슷한 코드로 테스트 한

+0

디버그에만 jlog 사용;) – Fred