0

ドロップダウンは、学期、コース、質問の3つです。質問のドロップダウンには、常に質問の完全なリストがあります。他の2つ:学期、コース; それらは、お互いが何を選択したかによって異なります。

セメスターとコースのオプションは次のとおりです。すべてのセメスター、セメスターA、セメスターB、...、セメスターN。同じことがコースにも当てはまります:すべてのコース、コースA、コースB、...、コースN。

したがって、現在私が持っているのは、3つのドロップダウンのいずれかが変更されるたびに、ajax呼び出しがあり、選択されたパラメーターを使用してグラフデータを検索することです。これは、たとえば、コースBのすべての学期のX質問、またはすべてのコースの学期BのX質問のグラフを見つけることができることを意味します。または最後に、コースBの学期AのX質問。

今、私はこれを完全に機能させることができました。ただし、問題は、コースと学期に、その教授のコースと学期の完全なリストが表示されることです。これは、存在しない組み合わせを選択できることを意味します。したがって、たとえば、コースBの学期W中にXの質問を選択できます。そして多分セメスターWの間に彼は1つのコースを教えました、そしてコースBはそのコースではありません。

そのときの私の目標は、コースと学期のドロップダウンを相互に依存させることでした。サーバー側では、これらの条件に対してクエリなどを設定し、Object.courseがリストに含まれるべきコースの配列であり、Object.semesterが必要なコースの配列であるオブジェクトを常に送信します。リストに載る:

if Course and Semester == ALL:
    do: Object.course = all courses, 
        Object.semester = all semesters.

if Course == ALL:
    do: Object.semester = all semesters, 
        Object.course = all courses given during selected semester.

if Semester == ALL:
    do: Object.course = all courses, 
        Object.semester = all semesters when the selected course was given.

else
    do: Object.course = Two options: All, Selected Course,
        Object.semester = Two options: All, Selected Semester.

すべての場合において、配列には最初のオプションとしてAllが含まれ、次に1つの追加オプションから完全なリストまでの範囲のいくつかのオプションが含まれます。

これが私がこれまでに持っているもののjsfiddleです。 http://jsfiddle.net/gFRAZ/1/ 私が抱えている問題は、選択オプションを削除して再度追加すると、クレイジーになり、間違ったアイテムを削除したり、すべてを削除したりすることです。そして、それは私が選択されたオプションとして選択されたものとして設定したものを保持しません。

それらを再度追加すると、Selectedプロパティが無視されると思います。

SOやインターネットで検索してみましたが、何時間も遊んでも問題が解決しませんでした。誰かが私を助けてくれることを願っています!よろしくお願いします。

サンプルデータオブジェクト:

var dropdown = new Object({course:['all', 'Course A', 'Course B'], semester:['all', 'Semester A', 'Semester B']});
4

1 に答える 1

1

私はそれを動かしました!

更新されたコードへのリンクは次のとおりです:http://jsfiddle.net/gFRAZ/2/

私はばかげていて、間違ったリストを更新しようとしていました。気づいたら、思った通りに動き始めました。

コースがすべての場合、学期リストではなく、コースリストを更新する必要があります。学期がすべての場合、コースリストではなく、学期リストを更新する必要があります。両方がAllの場合、または両方がAllでない場合は、を使用$('#dropdown').val(dropdownValue);して値を設定できますが、Changeイベントはトリガーされません。

だから私の場合:

if both = ALL
    Get the full link for both and set both values to all.
if Semester = ALL
    Change the Semester options
if Course = ALL
    Change the Course options
if neither are ALL
    Change both so that they only have ALL and the current selected value

たとえば、どちらもすべてではないときにドロップダウンを変更する場合:

var semesterVal = $('#semester').val();
var courseVal = $('#course').val();

//For each that will populate the semesterArray.

//For each that will populate the courseArray.

$('#course').empty();
$('#semester').empty();

$('#semester').append(semesterArray);
$('#course').append(courseArray);

$('#course').val(courseArray);
$('#semester').val(semesterArray);
于 2012-11-11T04:33:58.440 に答える