2017-05-29 3 views
0

私はタグフィールドを持っており、タグフィールドにキャレット位置を設定したいと思います。いくつかの値を選択した後、キャレットがダウンしているので、私は特定の位置に設定したい。ここで私がしようとしていることは、誰も私にそれを行う方法を教えてください。extJSタグフィールドのキャレット位置の設定方法

expand:function(field,eOpts){ 
     var field = arguments[0]; 
     var fieldValue = field.getValue(); 
     fieldValue.toString().length; 
     var pos = 140;//fieldValue.toString().length + 30; 
     var el = field.inputEl.dom; 
     el.setAttribute("selStartPos",pos); 
     if (typeof(el.selectionStart) === "number") { 
      el.focus(); 
      el.setSelectionRange(pos, pos); 
     } 
    }, 
+0

を持って、あなたが何を意味するのか「キャレットはダウンしています」。これは明らかではない。 –

+0

@LorenzMeyerこのフィドラーを確認してくださいhttps://fiddle.sencha.com/#view/editor&fiddle/20c8 4番目のタグのキャレットは次の行に行きます。私はキャレットが最初の行になければならない。 – David

+1

'キャレット'はカーソルを意味しますか?その場合、タグフィールドを含むパネルと3つの値を選択した後のパネルに指定された幅があります。タグフィールドは、パネルの幅である利用可能な最大スペース(水平方向)に展開されます。その後、下方向に拡大している。したがって、パネルの幅が最大化またはコメント化されていれば、うまく動作します。 –

答えて

1

カーソルは、特定の幅(この例では128px)を持つ入力要素にラップされています。

tag field input element width

トリガフィールドの最後に、入力要素の幅よりも左より少ないスペースがあれば、それは次の行にジャンプします。

入力の幅をCSSで微調整して、最小限のスペースをとり、最後に選択したアイテムの横にとどめます。このアプローチの

.x-tagfield-input-field { 
    width: 3px; 
} 
.x-tagfield .x-tagfield-input { 
    margin: 0; 
} 

一つ巨大な欠点あなたは本当にあなたがアイテムをフィルタリングするために入力したテキストを表示することができないということです。しかし、項目がドロップダウンから直接選択されていれば正常に動作します。ここで

はフィドルです:https://fiddle.sencha.com/#view/editor&fiddle/20nd

:トリガフィールドは、指定された「のminWidth」または「アンカー」設定を持っている必要があり、そうでなければ、それはminuscular初期幅

+0

お返事ありがとうございます。 +1はい正しく動作しています。型指定された項目だけが来ていません。そのための解決策を考えてみましょう。 – David

+0

多くの問題を修正しました。問題はうまくいきます。簡単な質問の1つは、 '.x-tagfield-input-field { width:3px; } 'プログラムによって実行されます。私は初期値を意味し、この50pxとそれに続く選択肢の最初の要素20pxを必要とします。それは可能ですか? – David

+1

確かに!タグフィールドはinput要素への参照を持っているので、 'tagfield.inputEl.setWidth(300)'のようにintputの幅を動的に変更することができます。 – scebotari66

0

this fiddlerを確認してください。 4番目のタグの場合、キャレットは次の行に行きます。私はキャレットが最初の行になければならない。

これは動作を意図したものです。タグフィールドは、次のタグを追加するために最後に空白スペースを残します。タグフィールドを右に展開するための十分なスペースがない場合は、新しい行を追加することによって展開されます。

タグを同じ行に追加できるようにするには、パネルからwidth属性を削除します。

Ext.create('Ext.form.Panel', { 
    renderTo: Ext.getBody(), 
    title: 'Sci-Fi Television', 
    height: 200, 
    //width: 500, 
+0

お返事ありがとうございます。ええ、私はこの行為を意図していることを知っていますが、そこにキャレットを置く方法はあります。私が一度入力すると次の行に行きます。 – David

関連する問題