2017-11-01 14 views
0

contenteditableでEnterキーを押したときにChromeがdivを追加しているようです。私はbrを常に使用したいと思います。 SO(とinterwebs)にはたくさんのjsの例がありますが、私はElmには新しく、これを行う方法に関する多くの情報はありません。Elm:enter pressでChromeのcontenteditable divにbrタグを追加するにはどうすればよいですか?

私はgithubの上でこのコードに遭遇しています

onKeyPress : (Int -> msg) -> Attribute msg 
onKeyPress tagger = 
    on "keypress" (Decode.map tagger keyCode) 

が、関数を使用する方法grokkingておりません。メッセージの種類は次のようになり

view : Model -> Html Message 
view model = div [ contentEditable True, onKeyPress SomeMessage] [] 

type Message 
= None 
| SomeMessage Int 

、更新がのようになります。入力フィールドを持つ例があります

update : Message -> Model -> (Model, Cmd Message) 
update message model = 
    case message of 
     SomeMessage (Ok isThisTheKeyCode) -> 
      (model, Cmd.none) 

     SomeMessage (Err err) -> 
      (model, Cmd.none) 

私の見解は次のようになりますしかし、私はそれらが異なっていると思う。

正しい方向に私を指差したり、ギャップを埋めるようなアドバイスをいただければ幸いです。ありがとうございました

更新:明らかに、私はこれがJavaScriptでどのように行われたかを見ることができます。私はElmの実装のための助けや指示を求めています。ありがとうございます

更新2:私は正しい方向にいると思います。私の実装は実際には、内部に別のcontentEditableを持つdivを持っていました。内部のdivは私が更新するために得ようとしていたものでした。

div [ contentEditable True][ 
    div [contentEditable True] 
    [] 
] 

私は、内側のcontentEditableが今まだあなたがby referring thisによってデフォルト段落の区切りを変更することができますどのようにクローム

答えて

0

divためbrを置換する把握しようと

div [ contentEditable True][ 
    div [] [] 
] 

のように見えます削除。しかし達成しようとしているものはShift + Enterの組み合わせで可能です。

+1

JSにはたくさんの例があります。私はElmの実装についての助けを求めています。また、この機能はユーザーに面しています。ユーザーに「Shift + Enter」(imo)を求めるのは不合理です。 –

関連する問題