1

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

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

提案は「User Name <userID>」の形式でリストされています。したがって、ユーザーが123と入力し始めると、ポップアップする提案の例は「HarveyMann<1234>」になります。

問題は、ユーザーがその提案を選択した場合、提案されたテキスト全体を入力フィールドに挿入したくないということです。ユーザーID(この場合は「1234」)を挿入したいだけです。また、可能であれば、隣接するフィールド/エリアにユーザー名(「HarveyMann」)を挿入できるようにしたいと思います。これを達成する方法はありますか?

4

1 に答える 1

4

CFの組み込みのオートサジェストの実装を使用しているため、1つの戻り値にしかアクセスできません。したがって、値が複数の「パーツ」で構成されていて、値のさまざまな「パーツ」をさまざまな列に挿入する場合は、値を解析して、文字列から適切なパーツを抽出する必要があります。あなたの例の場合、値を<で区切られたリストとして扱うことができます。この場合、「part」という名前を次のように取得できます。

trim(listfirst(form.userID, "<"))

およびid'part'

replace(listlast(form.userID, "<"), ">", "")

または、いつでもjQuery UIオートコンプリート実装を使用できます。独自のJavaScriptを作成する必要がありますが、組み込みのcfの実装よりもはるかに詳細に制御できます。詳細については、jQuery UIのドキュメントを確認してください:http://jqueryui.com/demos/autocomplete/

更新:考え直して、選択した値の「名前」の部分を同じページの別の領域に表示したい場合は、CFの組み込みのオートサジェストと少しのJavaScriptを使用して表示できる場合があります。このコードをページのHEADセクションに追加してみてください。

<cfajaxproxy bind="javaScript:showName({userID})">
<script type="text/javascript">
showName = function(strUserId) {
 document.getElementById("someID").innerHTML = strUserId.split('<')[0];
}
</script>
于 2012-06-18T13:36:57.307 に答える