2011-10-09 20 views
3

Opaでは、フォームの送信時にページをリロードしないようにするにはどうすればよいですか? submitを押すと、クライアント側の検証を実行し、検証が成功した場合にのみフォームを送信します。Opa:フォームが提出されたときにページリロードを防止する

私はこのフォームで働いている:

<form onready={_ -> ready()} id=#form_id> 
    <input type="submit" value="Submit" /> 
</form> 

この機能が正常に提出する上でそのメッセージをログに記録しますが、それでもページをリロードします:

ready() : void = 
    do ignore(Dom.bind(#form_id, {submit}, (_ -> Log.notice("submit","submitted")))) 

この関数は、そのメッセージとリロードをログに失敗しますページ:

ready() : void = 
    do ignore(Dom.bind_with_options(#form_id, {submit}, (_ -> Log.notice("submit","submitted")), [{prevent_default}])) 

私は必要としているので、WFormBuilderを使用しないでくださいフォームのhtmlと(私が実験したときにWFormBuilderでオプションのように見えなかった)妥当性検査のエラーメッセージに対する細かい制御。

ありがとうございました。 WFormBuilderthe source

答えて

3

は、私は、そのフォームのHTMLでこの属性を見つけました:options:onsubmit="prevent_default"

は、だから私が探していた行動がありスニペット:

<form onready={_ -> ready()} id=#form_id options:onsubmit="prevent_default"> 
    <input type="submit" value="Submit" /> 
</form> 

ready() : void = 
    do ignore(Dom.bind(#form_id, {submit}, (_ -> Log.notice("submit","submitted")))) 
+0

これは道オーパである理由私はまだわかりませんよこれを処理します。誰かが 'options'属性と' prevent_default'値が意図しているものについていくつかの洞察を持っていますか?それは非常に(限られたドキュメント)(http://doc.opalang.org/index.html#_syntax_extensions)を持っているようです。 – nrw

+0

'options:onsubmit'は、onsubmitイベントのイベントハンドラのオプションリストです。 'prevent_default'は、JSイベントで' e.preventDefault() 'を実行することと同じ効果があります(http://stackoverflow.com/questions/1357118/javascript-event-preventdefault-vs-return-false)ハンドラ。この決定をOpaのイベントハンドラ自体で行うことができないという技術的な理由があります(長い話ですが、イベントハンドラは非同期RPC呼び出しである可能性があります)。要するに:私はあなたがあなたの質問に完全に答えたと思う: – akoprowski

+0

清算のおかげで、アダム。 – nrw

関連する問題