0

オートコンプリートで複数のアイテムの選択を処理するにはどうすればよいですか? JSON Web サービスから返すオブジェクトには、ID とラベルが含まれています。ID はデータベース内のエンティティの ID であり、ラベルはユーザーに表示するテキストです。

現在、オートコンプリート ドロップダウンでアイテムを選択すると、アイテムの ID の値が非表示フィールドに格納され、ラベルが表示されます。ラベルを削除すると、非表示フィールドの ID がクリアされます。これは、これを処理する DOM にアンカー要素を追加することによって行われます。

今、私は複数の選択肢を持ちたいと思っています。テキストを入力したり、オートコンプリート ドロップダウンを取得したり、アイテムやその他のオプションを選択したりしてから、[新規追加] ボタンなどをクリックして別のインスタンスを選択できるようにしたいと考えています。

たとえば、人の名前を入力すると、オートコンプリートの選択肢が表示されます。人を選択して年齢を入力し、[追加] をクリックします。個人の ID、名前、年齢はどこかに保存されるので、ポストバックしたときにサーバー側で取得できます。

私はそれを行う方法がよくわかりませんか?私は隠しフィールドを考えています - 同じ名前/IDの多くの隠しフィールドがサーバー側で配列として表示され、それを使用できると想定しています。しかし、ASP.NET ではまだ試していません。

この問題をどのように解決しましたか?

4

1 に答える 1

0

まあ、提案はありません。最終的には、オートコンプリートの選択で、適切なスタイルのスパンを作成することでそれを行いました。テキストにはラベルが含まれ、必要に応じて要素を削除するクリック イベントをバインドするアン​​カー要素が含まれ、jQuery データ API を使用して ID 値をスパンに格納します。このスパンは、オートコンプリートに使用しているテキスト ボックスの前に、コンテナー div に追加されます。また、キーアップ イベントをテキスト ボックスにバインドして、バックスペースをチェックします。バックスペースが押され、テキスト フィールドが空の場合は、最後のオートコンプリート アイテムを削除します。ただし、keyup イベントが押されるまでに、テキスト ボックスから削除されていた文字が既に削除されているため、もう少し複雑です。そのため、jQuery API を使用して keydown イベントにも実際の値を保存し、これをチェックインします。キーアップ イベント。

フォームには非表示のフィールドがあり、スパンのデータから抽出された ID 値のコンマ区切りのリストが入力されています。これは、アイテムを追加/削除するとき、またはポストバックするときにのみ同期を保つことができます.クリアして再入力するのが最も簡単で、私が知る限り非常に効率的です.

ページをロードするとき、スパンと非表示フィールドを生成する必要があります。

これが解決策を探している他の人に役立つことを願っています。

于 2010-08-20T10:48:10.857 に答える