1

私は何日もこの問題を解決しようとしてきました..オンライン調査を行う必要があります.フォームはユーザーの以前の選択に応じて動的にロードされます..つまり、「名前」または「ID」を使用できません" 入力の属性は、常に同じであるとは限らないためです。Jquery 検証プラグインを使用して、すべての入力を必要とするようにしていますが、正常に動作します。しかし、私の問題は次のとおりです。

  • 一部の質問は、前の質問の回答に依存します。つまり、前の質問に回答するだけでなく、特定の回答が必要です。(例:「果物は好きですか?」という質問に対して「はい」と答えた場合は、「これらの果物のどれをよく食べますか?」という別の質問を表示し、「いいえ」と答えた場合は質問を表示しないでください)まったく。

データベースの質問テーブルにフィールド「依存」を追加して、他の質問に依存する質問を作成しようと考えましたが、依存関係のタイプは質問ごとに異なります。

静的なフォームがあれば、これは非常に簡単ですが、そうではありません。

助けてください!

4

1 に答える 1

0

data-これをアーカイブするために、いくつかのカスタム属性にhtml5 属性を使用しています。

html:

<input type="checkbox" data-dependid="test" />
<input type="text" data-dependid="test2" data-dependedid="test" data-dependedvalue="true" data-dependedtype="disabled" disabled="disabled" />
<input type="text" data-dependedid="test2" data-dependedvalue="input" data-dependedtype="disabled" disabled="disabled" />

jQuery:

$(function() {
    $("[data-dependid]").die().live("change keyup", function () {
        var that = this;
        var depends = $("[data-dependedid='" + $(that).attr("data-dependid") + "']");
        depends.each(function (i, depend) {
            var isSame = false;
            if (($(that).is(":checked") + "" == $(depend).attr("data-dependedvalue")) || ($(that).val() == $(depend).attr("data-dependedvalue"))) {
                isSame = true;
            }
            $(depend).attr($(depend).attr("data-dependedtype"), !isSame); //works for checked and disabled
        });
    });
});

これにより、最初のテキストボックスがチェックボックスに依存するようになりました。

2 番目のテキスト ボックスは、最初の値 (入力) に依存していました。

このフィドルを参照してください

表示オプションを追加するには、これを foreach に追加します。

var isSame = false;
if (($(that).is(":checked") + "" == $(depend).attr("data-dependedvalue")) || ($(that).val() == $(depend).attr("data-dependedvalue"))) {
    isSame = true;
}
if ($(depend).attr("data-dependendtype") == "display") {
    if (!isSame)
       $(depend).fadeOut();
    else
       $(depend).fadeIn();
}
else {
   $(depend).attr($(depend).attr("data-dependedtype"), !isSame);
}
于 2013-05-24T12:11:55.160 に答える