2011-11-24 66 views
4

我目前使用jQuery UI的自動完成插件combobox實現,但我改變了腳本,以便通過插件添加的輸入元素被禁用(用戶不能在輸入寫,他只能按一下按鈕,以查看選項)是這樣的:jQuery用戶界面自動完成組合框中輸入禁用

$.widget("ui.combobox", { 

_create: function() { 
    var self = this, 
        select = this.element.hide(), 
        selected = select.children(":selected"), 
        value = selected.val() ? $.trim(selected.text()) : ""; 
    var input = this.input = $("<input>") 
       .attr("name", select.attr("name")) 
       .attr('disabled', true) 
       .insertAfter(select) 
       .val(value) 
       .autocomplete({ ....... 

可能是因爲輸入的是殘疾人,組合框不會隱藏後,我通過單擊空白處,或者點擊失去焦點另一個組合框(輸入元素具有模糊事件處理程序,但不會觸發)。

有沒有一種方法來設置一個輸入元件上的模糊事件被禁用或隱藏,當用戶想要失去焦點的組合框的方法嗎?

+0

嗨@Atzoya,我用你的方法和它的作品以及在FF,但我添加了click事件所輸入的控制也因此,如果用戶點擊輸入下出現了下降。在FF中工作良好,但IE9下拉跳出並再次消失。你是如何工作的? – Jacques

+0

我檢查出來了,同樣的事情也發生在我的應用程序中。我目前正忙於另一個項目,但只要我找到一段時間,我會盡力找到解決方案。如果我這樣做,我會在這裏發佈。 – Atzoya

+1

嗨@Atzoya,我評論了處理bug $(this).blur();的行。這解決了我的問題。那麼它適用於FF,Chrome,Safari和IE 7,8和9.不知道關於IE6,雖然 – Jacques

回答

4

我會重新考慮你的策略一點。自動填充不適用於disabled輸入。相反,我會使用readonly。替換:

.attr("disabled", true) 

有:

.attr("readonly", true) 

您將獲得在input光標,但原來的要求得到滿足。

例子:http://jsfiddle.net/S77xa/1/

+0

謝謝。它的工作太棒了 – Atzoya

+0

@Atzoya:沒問題,很高興幫助! –

+0

謝謝,但是當我有多個組合框時,標籤索引不起作用! –

0

你需要改變:

.attr("disabled", true); 

到:

.attr("disabled", "disabled"); 

看看這個小提琴:http://jsfiddle.net/Lq8tq/1/

我希望這有助於!

+0

這確實會禁用文本框,但單擊組合框外部的任何位置都不會關閉組合框。安德魯的解決方案對我來說非常合適,無論如何感謝你的建議 – Atzoya

0

試試這個。

$('comboboxname').combobox('disable'); 

$('comboboxname').combobox('enable'); 
相關問題