0

UserID フィールドに ColdFusion autosuggest を使用しています。ユーザーがユーザー ID の入力を開始すると、ユーザー ID のリストがポップアップ表示されます (cfc 関数によって入力されます)。サンプルコード:

<cfinput name="userID" type="text" value="#userID#" autoSuggest="cfc:Utilities.suggestUser({cfautosuggestvalue})" matchcontains="true" />

autosuggest で値の 1 つを選択したときにハンドラーを起動して、選択した値を他の場所で使用できるようにしたいと考えています。JQuery コード:

$('#userID').change(function(){
    var userID = $(this).val();
    $('#otherUserIDField').html(userID);
});

問題は、autosuggest リストのアイテムをクリックすると、選択したエントリがフォーム フィールドに挿入される前に変更イベントが発生することです。たとえば、ユーザー「123456」を探していて、「123」と入力し始めて自動提案リストに表示された場合、自動提案リストで「123456」をクリックすると、変更イベントが発生します。フォームフィールドはまだ「123」です。遅延 ( ) を追加しようとしました$('#otherUserIDField').delay(1000).html(userID);が、役に立ちませんでした。他に使用できるイベントはありますか?これを回避する方法はありますか?

自動提案が選択された後にのみコードを実行するにはどうすればよいですか?

4

2 に答える 2

1

個人的には、組み込みのColdFusionajaxではなくjQueryをスタンドアロンで使用します。これは、実際のデモで実際に動作している良い例です:http: //jacktraynor.blogspot.com.au/2012/02/jquery-autocomplete-using-coldfusion.html

于 2012-06-21T01:14:48.627 に答える
1

メソッドを使用することになりましたsetTimeout。@Esailja がコメントで述べたように、delay関数は実際には html 呼び出しを遅らせません。遅延によりテキストボックスにフォーカスがなくなるため、新しいコードで「this」を使用できませんでした。

$('#userID').change(function(){
    setTimeout(function(){
            $('#otherUserIDField').html($('#userID').val());
        }, 1000);
});
于 2012-06-19T08:02:59.443 に答える