2013-04-11 25 views
0

我以前使用過jQuery的自動完成插件,但從未通過Yii將其作爲widget實現。在Yii中動態創建CJuiAutoComplete不起作用

我動態創建另一個自動完成字段,不能將其設置爲住:

$('input.ui-autocomplete-input').live("keydown.autocomplete", function() { 
    $(this).autocomplete(); 
}); 

或簡單的調用.autocomplete()創建時才能正常工作。任何想法,爲什麼這會通過Yii的不同工作,而不僅僅是使用插件本身,還是我錯過了一些非常簡單的東西?

感謝您的幫助!

+0

讓我們看看您的視圖代碼 – soju 2013-04-11 17:43:49

回答

1

我的解決方案過於簡單。

每個自動填充字段必須具有唯一的名稱屬性。我用

<input name="family[]"/> 
    <input name="family[]"/> 
    <input name="family[]"/> 

,改成固定:

<input name="family_0"/> 
    <input name="family_1"/> 
    <input name="family_2"/> 

只是有點尷尬,但值得張貼萬一別人永遠俯瞰這樣一個簡單的問題。

注:上面的代碼是不準確的,關鍵是要確保你使用的是唯一的名稱爲每個使用jQueryUI的的自動完成字段。

0

CJuiAutoComplete依靠的jQuery UI的autocomplete所以請確保jQuery UI的註冊了該視圖中,您在動態創建一個字段:

Yii::app()->clientScript->registerCoreScript("jquery.ui"); 

另外要確保你的自動完成標籤source參數提供了autocomplete()呼叫。以下工作適合我:

<?php 
$source = array(
    "hello", 
    "test" 
); 
?> 
<div id="wrapper"> 
</div> 
<?php 
Yii::app()->clientScript->registerScript("autocomplete", " 
    $('<input />') 
     .addClass('ui-autocomplete-input') 
     .appendTo($('#wrapper')); 
    $('input.ui-autocomplete-input').autocomplete({ 
     'source': " . CJavaScript::encode($source) . " 
    }); 
", CClientScript::POS_READY); 
+0

感謝您的回答,我瞭解了一些關於Yii的registerScript和family,您的代碼指引我走向。只需使用Yii寄存器中的CJuiAutoComplete小部件,jQuery和jQueryUI /重新註冊就會執行兩次代碼,因此對於其他任何人:請注意這一點。我在此發佈了非常簡單的解決方案。 ** /我在桌子上打頭** – 2013-04-21 04:43:46