0

こんにちは、リクエストに複数日を追加できるエントリ フォームを作成しています。各リクエストには 1 日以上を添付でき、フォームを送信する前に、毎日いくつかの選択を行う必要があります。これを実現するために、ここで説明する方法を使用しています。

ここで、JSON データ ソースを使用して親子関係を持つドロップダウン リストを作成するなど、より高度な UI 機能をいくつか実行したいと考えています。私はまだかなり新しい Web 開発 (IBM i のグリーン スクリーン開発から来ている) であるため、例とチュートリアルでまだ学んでいます。セットが1つしかない場合の親子ドロップダウンの例をたくさん見つけましたが、正しい選択値を表示しながら、任意の数の行とページに追加されたすべての新しい行に対してこれが機能する必要があります編集ページがロードされたときに行ごとに。これに加えて、特定の選択が行われたときに、いくつかの新しいフィールドを明らかにしたいと考えています。

これが私がこれまでに持っているものです: 複数日エントリー

(これはスクリーン ショットであり、最終的な機能を気にせず、ただ動作させることに基づいています。現在、子ドロップダウンにはすべてが表示されています。)

申請タイプは、取得したい休暇のタイプを選択します。Use Hours Type は、Request Type に入力された内容に基づいてリストを取得します。上記の問題は、「日を追加」をクリックしたときに追加された新しい行で動作するようにすることです。課題は、リクエスト タイプに基づいて 2 番目の行を表示/非表示にすることです。病気 - 従業員の病気を選択すると、病気の性質が表示されます。別のオプションを選択すると、病気の性質と人間関係の両方が表示されます。休暇を選択した場合、どちらのフィールドも表示されません。

これらのリストの JSON 設定があります。どのオプションに対して何が表示されるかを定義するフィールドを含めました。

[{"Id":11,"Title":"Employee Illness","ParentId":10,"MapToCode":"02","HasRelationship":false,"HasNatureOfIllness":true,"ChildRequired":false,"Notes":"","AccrualCode":"S"},
{"Id":1,"Title":"Vacation","ParentId":0,"MapToCode":"04","HasRelationship":false,"HasNatureOfIllness":false,"ChildRequired":false,"Notes":"","AccrualCode":"VAC"}]

これは、初心者が学び、理解しなければならないことがたくさんあることを私は知っています。チュートリアルを共有したり知ったり、正しい方向に向けることさえできる人はいますか? (適切な用語でさえ)これに関する私の検索は、これまでのところ失敗しています。

4

2 に答える 2

1

私がお勧めできる最善の方法は、単一の行の共通の親を取得し、それを残りの行全体の基準点として使用することです。(これらが<tr>テーブルの場合は、tr にラベルを付けるか、それを呼び出すために使用できるクラスを指定します)。行内の他の何かを変更する必要がある場合は、 を使用.closestして親を見つけてから、目的のフィールドまでトラバースします。

次に、このデータが本当に動的でない限り、新しい行ごとに使用できるローカル変数にドロップダウンの結果をキャッシュしてみてください。つまり、リクエスト タイプと使用時間タイプに常に同じエントリ (ajax 経由で取得) がある場合は、 と から再入力するだけvar request_typesですvar use_hours_types

.live3 番目に、最初のバインド後に変更が加えられたにもかかわらず、これは DOM 要素にバインドされるため、using に注目してください。したがって、行の 2 番目の部分がドロップダウンの選択に基づいている場合は、次のようなものを使用します。

$('dropdown').live('change',function(){
   $(this).close('parent_object').filter('.corresponding_row').show();
});

(またはファクシミリ)。

配置したコードを確認せずに、情報を収集する別の方法を考えてみてください。難しいのは、現在の選択に影響を与える可能性があるため、(おそらく) ajax データを使用して各ドロップダウンを大幅に再割り当てしたくないことです。そのため、可能な限りデータを保存し、新しい行を作成するときに使用してください。

于 2010-12-10T15:17:10.983 に答える
0

私はこの質問で解決策を開始しました。

于 2010-12-10T19:19:39.273 に答える