2017-05-29 69 views
0

我有一個標記域,並且希望在tagfield中設置插入符號的位置。在選擇少數值後,脫字符號正在下降,所以我想設置在特定的位置。這是我正在嘗試,任何人都可以請解釋我如何做到這一點。如何設置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對於第四個標籤插入符號將進入下一行。我想脫口秀應該在第一線。 – David

+1

'caret'是否意味着光標?如果是,則爲包含標記字段的面板指定寬度,然後選擇三個值。標記字段水平擴展到其最大可用空間,即面板的寬度。之後它正在向下擴展。所以如果面板寬度最大化或評論,那麼它工作正常。 –

回答

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

我修復了很多問題,並且工作正常。一個簡單的問題是,有什麼方法可以改變'.x-tagfield-input-field {width:3px; }'編程。我的意思是最初我想要這個'50px'和後選第一個'20px'。那可能嗎 ? – David

+1

當然! tagfield具有對輸入元素的引用,以便您可以像這樣動態更改輸入的寬度:'tagfield.inputEl.setWidth(300)'。 – scebotari66

0

請檢查this fiddler。對於第四個標籤,插入符號將進入下一行。我想脫口秀應該在第一線。

這是打算的行爲。標記欄在結尾留下了空白區域,以便添加下一個標記。如果沒有足夠的空間將標記欄向右擴展,則會通過添加一個新行來擴展。

如果您希望能夠在同一行添加更多標籤,只需從面板中刪除寬度屬性即可。

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

感謝您的回答。雅我知道這種打算的行爲,但是有什麼方法可以在那裏插入字樣。一旦我鍵入,然後去下一行對我來說很好。 – David

相關問題