0

バックグラウンド:

私はJSとPrototypeが初めてなので、我慢してください。

私は非常に大きなフォームを持っています。現在、完全なフォームの重量は 233K です。マークアップ、スタイリング、カスタム JS を含む約 400 のフォーム アイテム。非圧縮で 370K の重さの Jotform の「拡張機能」を備えたプロトタイプを使用します。これをスキミングする人にとっては 600K です。

600K。それに関連するものを軽くするためだけに、私はそれを ProJo と呼んでいます。

携帯電話やタブレットのフィールドで使用することを意図しているため、良くも悪くも、一部のセクションはたまにしか必要とされないため、必要に応じてそれらを切り取って動的に追加することにしました. この部分は問題なく動作します (マイナーな非表示/表示の不具合があります。これは、既存のアニメーションを意図されていない方法で使用することに関連していると思われますが、現時点では重要ではありません)。

もう機能しないのは、フォームの検証です。ページが読み込まれると、すべてのフォームと CSS 要素が「収集」され、動的に追加されたものはコレクションに含まれないように見えます。

これは一種の一般的な現象であることが検索でわかりましたが、残念ながら、ProJo に適用できる解決策はありません。この解決策は私がやってきたのと同じくらい近いですが、それが私の問題に対する正しい答えであっても、それを適用する方法がわかりません。私が理解していることから、呼び出しの瞬間からすべての要素に適用したい特定の関数に適用されます。課題は、呼び出す関数がわからないことです。

フォームは JotForm.init(); で初期化されます。再起動する方法はありますか?それは Prototype が行うことですか、それとも Jotform の拡張機能に存在する場合、それは存在することでしょうか? そうでない場合、それは可能ですか?

昨日、Chrome デバッガーを使用して ProJo で呼び出された関数をトレースし、ProJo スクリプトと DOM イベントの両方にブレークポイントを追加するのに数時間費やしましたが、私が認識しているのは、言語、ProJo、およびデバッグの経験が浅いためです。そのように、私はそれを理解することができませんでした。

問題のjotform.jsへのリンクを次に示します。

さらにコードが必要な場合は、お知らせください... jQuery で検証とアニメーションを再実装する方が簡単かもしれないと考える段階に近づいています。公平を期すために、私は jQuery を使用したことがありません... オンラインで jQuery と Prototype の比較を読んだだけですが、豊富な例、ガイド、ユーザー ベース、すぐに実行できるプラグインは大きな魅力です。JotForm は、優れた機能を備えた見栄えの良いフォームをすばやく作成するための優れた方法ですが、私のニーズはもう少し先にあると思います。彼らの名誉のために、すべてではないにしてもほとんどのスタイリングは CSS で行われ、検証目的でフォームの外観を変更するためにクラス値を変更するだけです。

要約すると: Prototype/JotForm (ProJo) 動的フォーム要素が検証されない「拡張」フォーム。ProJo を再初期化する方法、または必要な関数 (私には不明) を実行または呼び出す関数を呼び出す方法はありますか? jQueryでやり直す価値があるかどうかを考えている/知っている人はいますか?

余談ですが、もう 1 つ質問があります。私の方法論には欠陥がありますか? モバイル ソリューション用にこれほど大きなフォームを実装した人は他にいますか? あなたの経験は何ですか?

ありがとう

4

1 に答える 1

0

要素をフォームから削除するのではなく、「ロールアップ セクション」で非表示にしてみませんか? フォームのセクションを div (またはフィールドセット) でラップしてから、Element.hide/Element.show (または scriptaculous のロールアップ/ロールダウン アニメーション) を使用します。dom:loaded イベント ハンドラーで Element.hide を使用して、これらのあまり使用されないセクションの一部を既に非表示にしてフォームを事前設定できます。重要な点は、フォーム フィールドを無効にする (または削除する) のではなく、バリデーターがフォーム全体を認識して機能することです。

これは、かなり複雑な Web アプリ (独自のジェネレーター/ポピュレーター/バリデーター/サブミッター ライブラリを使用) で使用した手法です。すべてのフォームが常にそこにあるため、コードの複雑さが軽減され、ユーザーはロールアップ/ロールダウンのアイデアを見つけました。把握するのは非常に簡単です。iPhone や Android でも動作します。

于 2011-06-26T11:06:42.100 に答える