1

jQT オーバーレイを操作する単純なテキスト入力ダイアログがあります。リンクをクリックすると、オーバーレイがフォームと共に開き、フォームに入力し、送信をクリックすると、フォームが処理されます。現在、フォームに検証を追加しようとしていますが、検証は行われません。リンクのオーバーレイを無効にして、フォームを別のウィンドウで開くと、検証が適切に機能するため、基本的な検証機能が適切に設定されていると比較的確信できます。このオーバーレイなしのバージョンは、 http://flowplayer.org/tools/demos/validator/index.htmlで実際に起こっていることです。フォームを含むページが読み込まれ、検証が設定され、検証コードがフォーム上で実行されます。参加する。

オーバーレイ バージョンの問題は、おそらくフォームが見つからないため、検証が適切に設定されていないことだと思います。リンクがクリックされるまでオーバーレイ フォームは存在しないため、リンクを含むメイン ページで validator() を呼び出すことはできません。Validator() 呼び出しを含む SCRIPT タグを、作成時にフォーム コードの末尾に追加しようとしましたが、うまくいきません。また、オーバーレイ フォームを設定する jQuery コード内から適切な ID で validator() を呼び出すこともありません。いずれの場合も、コンソールに JavaScript エラーが表示されることはありません。ぐう。

これは jQT フォームと検証の一般的な使用法だと思いますが、ここで何が起こっているのか (またはここで起こっていないのか) を理解できません。何かアドバイス?ありがとう!

4

1 に答える 1

2

onLoadオーバーレイでイベントをタップするだけでよいはずです:

$("#dialog").overlay({
    load: true,
    onLoad: function() {
        $("#form").validator();
    },
    onBeforeClose: function() {
        $("#form").data("validator").reset();
    }
});

編集:onBeforeCloseオーバーレイを閉じたときにフォームの検証をリセットするハンドラーを追加しました。

さらに、z-indexエラーの CSS プロパティがオーバーレイの z-indexより上にあることを確認してください。

validator()ただし、オーバーレイ セットアップ コードの外側に呼び出しを配置できない理由がわかりません。

リンクがクリックされるまでオーバーレイ フォームは存在しないため、リンクを含むメイン ページで validator() を呼び出すことはできません。

これは正しくありません: FireBug で HTML を調べると、オーバーレイ要素が隠されているだけで、表示され、CSS が div に適用されてモーダル ダイアログのように見えることがわかります。はform常に DOM に存在する必要があります。

ここで実際の例を確認してください: http://jsfiddle.net/andrewwhitaker/SY​​PSG /

于 2011-01-06T02:18:23.617 に答える