0

次のコードを使用して、2 つのインライン日付ピッカーを使用して日付範囲を選択しています。2 つの日付フィールド (クラスdateheaderを持つdiv ) があります。日付を選択すると、その日付ピッカーが上にスライドします。基本的に、日付divクリックされると、最初に、対応する日付ピッカーが ( fromclickedおよびtoclicked変数を介して) 既に表示可能であるかどうかがチェックされます。どちらかを行い、他の日付ピッカーを上にスライドさせ、対応するクリックを設定します属性を 0 に変更します。これで、コードの下部にテキスト入力ができました。除外すると、コードは期待どおりに正常に動作します。ただし、含まれている場合、コードが壊れます。つまり、1 つの日付divをクリックしてから日付ピッカーから日付を選択すると、正しくスライドアップします。次に、他の日付divをクリックすると、日付ピッカーは問題なく下にスライドしますが、日付を選択しても上にスライドしません。私は途方に暮れています。バグはどこですか?完全なコードはhttp://jsfiddle.net/Cupidvogel/2ppYb/にあります (UI-CSS ファイルを含めることはできませんでしたが、スタイルのないバージョンでも十分です!)。

 <!DOCTYPE html>
<html>

    <head>
        <style>
            .dateheaders {
                background: black;
                width: 120px;
                height: 28px;
                position: absolute;
                top: 0px;
                left: 33px;
                border-radius: 5px;
                cursor: pointer;
                display: inline-block;
                z-index: 55;
            }
            .toheader {
                left: 216px
            }
            .spandate {
                color: white;
            }

            div#diva1 {
                width: 190px;
                position: absolute;
                display: none;
                z-index: 10;
                outline: none;
            }
            div#diva2 {
                width: 190px;
                position: absolute;
                display: none;
                z-index: 10;
                outline: none;
            }
            #datecontainer {
                position: relative;
                width: 400px;
                height: 30px;
                background: red;
                top: 60px;
                left: 40px;
            }
        </style>
        <link type="text/css" href="ui-darkness/ui.css" rel="stylesheet"
        />
        <script src="jquery.js"></script>
        <script type="text/javascript" src="ui.minified.all.js"></script>
        <script>
            $(function () {

                fromclicked = 0;
                toclicked = 0;



                $("#diva1").datepicker({
                    changeMonth: true,
                    changeYear: true,
                    dateFormat: 'dd/mm/yy',
                    maxDate: "+0D",
                    onSelect: function (selectedDate) {
                        fromclicked = 0;
                        $("#diva2").datepicker("option", "minDate", selectedDate);
                        $("div.fromheader").css({
                            borderRadius: '5px'
                        }).find('span').text(selectedDate)
                        });
                        $("#diva1").slideUp(300);
                    }
                });
                $("#diva2").datepicker({
                    changeMonth: true,
                    changeYear: true,
                    dateFormat: 'dd/mm/yy',
                    maxDate: "+0D",
                    onSelect: function (selectedDate) {
                        toclicked = 0;
                        $("#diva1").datepicker("option", "maxDate", selectedDate);
                        $("div.toheader").css({
                            borderRadius: '5px'
                        }).find('span').text(selectedDate).end()
                        });
                        $("#diva2").slideUp(300);
                    }
                });
                $("body").css({
                    fontSize: '16px'
                });
                $("div.ui-datepicker-inline").css({
                    fontSize: '62.5%',
                    left: '-50px',
                    borderRadius: '0px 10px 10px 10px'
                });

                $(".dateheaders").click(function () {
                    $top = $(this).offset().top + $(this).height() - 1;
                    $left = $(this).offset().left;
                    if ($(this).hasClass('fromheader')) {
                        $("div#diva2").slideUp(300, function () {
                            toclicked = 0;
                        });
                        $(".toheader").css({
                            borderRadius: '5px'
                        })
                        });
                        if (!fromclicked) {
                            fromclicked = 1;
                            $("div#diva1").appendTo("body").css({
                                display: 'block',
                                top: $top,
                                left: $left
                            }).slideUp(0).slideDown(300, function () {
                                $(this).focus();
                            });

                            $("div.fromheader").css({
                                borderRadius: '5px 5px 0px 0px'
                            })
                            });
                        } else {
                            $("div#diva1").slideUp(300);
                            $("div.fromheader").css({
                                borderRadius: '5px'
                            })
                            });
                            fromclicked = 0;
                        }
                    } else {
                        $("div#diva1").slideUp(300, function () {
                            fromclicked = 0;
                        });
                        $(".fromheader").css({
                            borderRadius: '5px'
                        })
                        });
                        if (!toclicked) {
                            toclicked = 1;
                            $("div#diva2").appendTo("body").css({
                                display: 'block',
                                top: $top,
                                left: $left
                            }).slideUp(0).slideDown(300, function () {
                                $(this).focus();
                            });

                            $("div.toheader").css({
                                borderRadius: '5px 5px 0px 0px'
                            })
                            });
                        } else {
                            $("div#diva2").slideUp(300);
                            $("div.toheader").css({
                                borderRadius: '5px'
                            })
                            });
                            toclicked = 0;
                        }
                    }
                });


            });
        </script>
    </head>

    <body>
        <div id='datecontainer'>
            <div class='dateheaders fromheader'>
                <span class='spandate'>Select a date</span>
            </div>
            <div class='dateheaders toheader'>
                <span class='spandate'>Select a date</span>
            </div>
            <div id='diva1'></div>
            <div id='diva2'></div>
        </div>
        <input id='boombada' type="text" size="23" value="" />
    </body>

</html>

結果を確認するには、コア jQuery UI ファイル (すべてを含む、約 202 KB のサイズ) と UI-darkness テーマ フォルダーを含めてください。

さらに更新すると、エラーはテキストまたはパスワード入力でのみ持続します。入力タイプをラジオまたはチェックボックスに変更すると、正常に機能します。コンソールにエラー ステートメントa is undefined が表示され、縮小された UI ファイルの datepicker js 部分の最初の行が示されます。

4

0 に答える 0