7

jquery uiダイアログのデモはすべて、「flora」テーマを使用しています。カスタマイズしたテーマが欲しかったので、themerollerを使用してcssファイルを生成しました。使用したときはすべて正常に機能しているように見えましたが、後でダイアログに含まれる入力要素を制御できないことがわかりました(つまり、テキストフィールドに入力できない、チェックボックスをオンにできない)。さらに調査したところ、ダイアログ属性「モーダル」をtrueに設定すると、これが発生することがわかりました。植物相のテーマを使用する場合、これは発生しません。

jsファイルは次のとおりです。

topMenu = {
    init: function(){
        $("#my_button").bind("click", function(){
            $("#SERVICE03_DLG").dialog("open");
            $("#something").focus();
        });

        $("#SERVICE03_DLG").dialog({ 
            autoOpen: false,
            modal: true, 
            resizable: false,
            title: "my title",
            overlay: { 
                opacity: 0.5, 
                background: "black" 
            }, 
            buttons: { 
                "OK": function() { 
                    alert("hi!");
                }, 
                "cancel": function() { 
                    $(this).dialog("close"); 
                } 
            },
            close: function(){
                $("#something").val("");
            }
        });
    }
}

$(document).ready(topMenu.init);

植物相のテーマを使用するhtmlは次のとおりです。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>sample</title>
<script src="jquery-1.2.6.min.js" language="JavaScript"></script>
<link rel="stylesheet" href="flora/flora.all.css" type="text/css">
<script src="jquery-ui-personalized-1.5.2.min.js" language="JavaScript"></script>
<script src="TopMenu.js" language="JavaScript"></script>
</head>
<body>

<input type="button" value="click me!" id="my_button">
<div id="SERVICE03_DLG" class="flora">please enter something<br><br>
<label for="something">somthing:</label>&nbsp;<input name="something" id="something" type="text" maxlength="20" size="24">
</div>

</body>
</html>

ダウンロードしたthemerollerテーマを使用するhtmlは次のとおりです。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>sample</title>
<script src="jquery-1.2.6.min.js" language="JavaScript"></script>
<link rel="stylesheet" href="jquery-ui-themeroller.css" type="text/css">
<script src="jquery-ui-personalized-1.5.2.min.js" language="JavaScript"></script>
<script src="TopMenu.js" language="JavaScript"></script>
</head>
<body>

<input type="button" value="click me!" id="my_button">
<div id="SERVICE03_DLG" class="ui-dialog">please enter something<br><br>
<label for="something">somthing:</label>&nbsp;<input name="something" id="something" type="text" maxlength="20" size="24">
</div>

</body>
</html>

ご覧のとおり、参照されているcssファイルとクラス名のみが異なります。誰かが何が間違っている可能性があるかについての手がかりを持っていますか?

@David:試してみましたが、機能しないようです(FFでもIEでも)。私はインラインCSSを試しました:

style="z-index:5000"

また、外部のcssファイルを参照してみました。

#SERVICE03_DLG{z-index:5000;}

しかし、これらはどちらも機能しません。私はあなたが提案したものに何かが欠けていますか?

編集:
brostbeefで解決してください!
もともと植物相を使っていたので、クラス属性を指定しなければならないと勘違いしてしまいました。結局のところ、これは実際に植物相のテーマを使用する場合にのみ当てはまります(サンプルのように)。カスタマイズされたテーマを使用する場合、クラス属性を指定すると、その奇妙な動作が発生します。

4

4 に答える 4

3

クラスが違うからだと思います。
<div id="SERVICE03_DLG" class="flora"> (フローラ)
<div id="SERVICE03_DLG" class="ui-dialog">(カスタム)

フローラ テーマを使用しても、ui-dialog クラスを使用してダイアログとして定義します。

以前にモーダルを行ったことがありますが、タグでクラスを定義したことさえありません。jQueryUI がそれを処理します。

class 属性を取り除くか、「ui-dialog」クラスを使用してみてください。

于 2008-10-23T20:27:16.847 に答える
1

Firebug でこれを試した後、1004 を超える z-index 属性をデフォルトの div、ID「SERVICE03_DLG」に追加すると、機能します。念のために、5000などの非常に高い値を付けます。

これを引き起こしているテーマローラー CSS が何であるかはわかりません。彼らはおそらく、ダイアログに変わるターゲット div の位置属性を変更または無視しました。

于 2008-09-05T13:06:55.730 に答える
1

ダイアログとタブを使用してテーマローラーのテーマを実装しようとしましたが、テーマローラーの CSS が公式の jQuery で機能しないことがわかりました。特にダイアログとタブについては、要素クラスを公式の jquery のものから変更しました。ここを参照してください: http://filamentgroup.com/lab/introducing_themeroller_design_download_custom_themes_for_jquery_ui/

ユーザーのコメント:

3) ダウンロードした生成されたテーマが不完全なようです - それを使用しようとすると、タブ (フローラ テーマで動作し、ドキュメントの例と同じコード) がタブとしてスタイル設定されません。

3 に出くわしたので、行き詰まり、"flora" を使用して元に戻さなければならないと思いました… "demo" ファイルのソース コードを読んで、html を調整して <li> 項目を指定すると、タブに「ui-tabs-nav-item」クラスを使用すると、機能します。

したがって、themeroller によって生成されたテーマは残念ながら不完全です。タブが不完全な場合、他に何が不完全なのか疑問に思います。かなりイライラしました。:(

続いてテーマローラー開発者のコ​​メント:

3) それを見てみましょう。これらのクラスがプラグインによって追加されるべきであることは正しいです。ただし、今のところは、themeroller テーマを使用できるようにマークアップに追加するだけで、おそらくそれほど害はありません。ただし、確認します。私たちのセレクターは代わりに親の ui-tabs セレクターに基づくことができると思いますが、セレクターで要素を使用しないようにしようとしていたと思います。やることリストに入れて検討する

于 2008-10-07T10:38:16.120 に答える
0

男、これは良いものです。私はこれらの2つのページでたくさんのことをやってみました。CSSを完全に除外して、両方のページを試してみましたか?私はFirebugを使用して両方のページのヘッダーからCSSを削除しましたが、入力は一方では機能し、もう一方では機能しませんでしたが、FirebugがレンダリングからCSSを完全に削除しないと信じる傾向があります。実際にコードから削除すると、異なる結果が得られます。

また、マウスを使用してテキストボックスにテキストを貼り付けることができることもわかりました。これは、キーボード入力を受け入れないだけです。ただし、これを妨げるイベントハンドラーはないようです。

于 2008-09-05T15:38:02.260 に答える