2011-10-14 43 views
0

從jQuery .get()調用返回時,出現cfinput標記的問題。如果我把標籤上的主頁上,像這樣:cfinput autosuggest從.get()調用不正確返回

<cfform> 
    <cfinput type="text" name="txtinputfilter" autosuggest="cfc:#Application.cfcDir#autoSuggest.lookupTailNumber({cfautosuggestvalue})" > 

標籤正確加載,並自動提示按預期工作。但是,如果我把完全相同的標籤(沒有別的)在一個單獨的模板,命名公共/包括/ FilterData.cfm,並從主頁調用它像這樣:

<div id="txt_input_container"></div> 
$(document).ready(function(){ 
    //the following get call is normally called on another select input's onchange 
    $.get('common/includes/FilterData.cfm', 
     //note that the following parameters are not being used in this example 
     {column: selectedValue, 
     filterValue: filterValue, 
     filterID: filterID, 
     configFile: 'Tracking/config/GeneralMaint.xml'}, 
     function(response){ 
      $('#txt_input_container').empty().append(response); 
     } 
    ); 
}); 

標籤加載,但autosuggest不起作用。控制檯顯示我的GET隨後的8個以上電話:

http://localhost/CORE/common/includes/FilterData.cfm?column=SERIAL_NUMBER&filterValue=&filterID=fi_1&configFile=Tracking%2Fconfig%2FGeneralMaint.xml 

http://localhost/CFIDE/scripts/ajax/yui/yahoo-dom-event/yahoo-dom-event.js?_=1318592952367 

http://localhost/CFIDE/scripts/ajax/yui/animation/animation-min.js?_=1318592952634 

http://localhost/CFIDE/scripts/ajax/yui/autocomplete/autocomplete-min.js?_=1318592952706 

http://localhost/CFIDE/scripts/ajax/messages/cfmessage.js?_=1318592952745 

http://localhost/CFIDE/scripts/ajax/package/cfajax.js?_=1318592952782 

http://localhost/CFIDE/scripts/ajax/package/cfautosuggest.js?_=1318592952821 

http://localhost/CFIDE/scripts/cfform.js?_=1318592952859 

http://localhost/CFIDE/scripts/masks.js?_=1318592952907 

後跟此錯誤消息:

_cf_resetLoadingIcon_1318592952305 is not defined 
[Break On This Error] /* ]]> */</script> 
+0

我對這個問題有些困惑,丹。在第二個示例中,我沒有看到cfinput的用途,您是否可以修改第一個和第二個代碼片段,以便它們都可以顯示cfinput與jQuery的關係? –

+0

@Shawn,我編輯了這個問題......希望澄清。 – earachefl

+0

您是否試圖在div_input_container中動態顯示生成的cfform/cfinput?這會產生問題,因爲父模板有它自己的jscript,並且你調用的模板有*它自己的jscript - 當你使用autosuggest參數時,由CF動態生成。你想做的事情可以做,但不像你想象的那麼容易 - 你的函數(響應)必須有一個響應cfinput自動建議的處理程序。你會得到錯誤,因爲動態顯示的cf期望適當生成的jscript(由CF) - 但不會在結果中解釋。 –

回答

1

這會不會是你想聽到的答案。

爲了讓您動態顯示jQuery .get()操作的結果,並讓新的javascript生效,影響新顯示的HTML的事件必須在初始.get() )。通常情況下,這是可行的......東西沿的線條:

$.get('common/includes/FilterData.cfm', 
     {column: selectedValue}, 
     function(response){ 
      $('input').change(function(event){ 
       ...addtl. logic here 
      } 

你會找到一個方法來指向內改變事件的品牌新的輸入字段來綁定/調用你的新函數由於您的初始.get()調用而被加載。

如果涉及到CFML,這裏就會變得混濁。 cfform/cffinput,當與autosuggest參數結合使用時...自動爲您手動構建javascript ...。但是,對代碼的生成並沒有真正的控制權--CF會任意命名它。當我輸入你的代碼進行測試時,我得到一個名爲_cf_autosuggest_init_1318614417652的函數......對你來說是一樣的嗎? (可能不會)。

因此,如果你不知道他們將被調用什麼,它將非常難以動態綁定新的事件處理程序.get()的結果。

我的建議是重新設計您的.get()調用,以便您不加載cfform/cfinput - 但也許是原始數據本身 - 並將輸入保留在父模板上,或者(深呼吸)...

...廢棄cfform/cfinput,並手動編寫jQuery autosuggest功能,以便控制函數的名稱 - 並且可以在您的jQuery結果處理程序中指向它們時間動態綁定到他們。

+0

嗨肖恩,這是我認爲我們在這裏領導的方向......我們將大部分網站從ExtJS轉換到jQuery,而我們越走越遠,我們越發現這兩個網站並不總是很好地發揮一起。不幸的是,截止日期正在逼近... – earachefl