0

jQuery .get()呼び出しから返されたときにcfinputタグに問題があります。このようにメインページにタグを付けると:

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

タグが正しく読み込まれ、オートサジェストが期待どおりに機能します。ただし、まったく同じタグ(他には何もありません)をcommon / contains / 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);
        }
    );
});

タグは読み込まれますが、オートサジェストは機能しません。コンソールには、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> 
4

1 に答える 1

1

これはあなたが聞きたい答えではありません。

jQuery .get() 操作の結果を動的に表示し、新しい JavaScript を有効にするには、最初の .get() の結果ハンドラー中に、新しく表示された HTML に影響を与えるイベントをバインドする必要があります。通常、これは実行可能です...次の行に沿った何か:

 $.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 結果ハンドラーでそれらを指すことができるようにします。

于 2011-10-14T18:03:55.203 に答える