2015-12-03 166 views
0

我正在使用MVC Razor和Telerik Kendo MVC。我有一個我希望自動設置焦點的dropdownlst,以便用戶可以立即開始鍵入和過濾所需的值。該DDL是:Kendo UI MVC DropDownList過濾焦點

@(Html.Kendo().DropDownList() 
    .Name("ddlLocations") 
    .Filter("contains") 
    .BindTo(Model.Locations) 
    .DataTextField("Text") 
    .DataValueField("Value") 
    .Events(events => events.Change("onChange")) 
    .HtmlAttributes(new { style = "width:100%" }) 
    .Value(Model.Exception.LocationIDCouponTypeStatus) 
) 

我有一個類似的項目在ASP.NET WebForms和我在Javascript中所做的是:

var comboBox = $find("<%=ddl.ClientID %>"); 
comboBox._inputDomElement.select(); 

這集中在告訴它開始過濾控制的部分當用戶開始輸入時。它似乎沒有翻譯成MVC版本。

var comboBox = $("#ddlLocations").data("kendoDropDownList"); 
comboBox._inputDomElement.select(); 

任何想法?提前致謝。

回答

0

你需要先打開下拉列表:

.Events(p => p.DataBound("function(e){ this.open(); this.filterInput.focus(); }")) 

替代方案:

$(function(){ 
    var dd = $("#ddlLocations").data("kendoDropDownList"); 
    dd.open(); 
    dd.filterInput.focus(); 
}); 

.Events(p => p.DataBound("function(e){ setTimeout(function(){ this.open(); this.filterInput.focus(); }, 500); }")) 
+0

有沒有辦法不先打開列表呢?僅僅因爲我在ddl上面有一個可變圖像,有時會在加載時有點延遲,並且根據其大小它會將控件向下移動到屏幕上。因此,最終發生的事情是打開的列表在頁面上的某個點上呈現,然後圖像加載並將所有內容向下推,並且打開的列表仍處於原始位置。我也不一定要打開列表,他們可能會或可能不想開始輸入,他們可能會跳到下一個字段。儘管您的解決方案技術上可行。 – Cef

+0

@Cef好的搜索輸入位於下拉菜單中,所以你需要先打開它,但是你可以嘗試setTimeout來延遲打開,或者在文檔就緒事件中調用它:'$(function(){....} )'或'成功'回調,如果它是ajax請求 –

+0

是的我注意到它不同於AJAX控件。我可以嘗試使用組合框,看看它是否符合我的需求。感謝您的協助! – Cef

0

比這更容易,劍道已經有一個焦點()函數,只是做comboBox.focus()

+0

雖然這確實把焦點放在控件上,但它不允許你在沒有鼠標進一步輸入的情況下開始鍵入。 – Cef