0

これは検証スクリプト
です このコードは、ユーザーがフォームの送信ボタンを押すと実行されます すべての必須フィールド (配列に入力されたもの) をループし、...
1. 要素が非表示かどうかを確認します
2. そうでない場合は空ですか?
3. そうでない場合、それは誤りですか? (選択できないオプションの値として false を使用します)
そして、これらすべてが変数を true または false に設定します。

// when submitting the registration form
function mandatoryCheck() {
    jQuery('.tx-powermail-pi1_formwrap_1723 form.tx_powermail_pi1_form').submit(function(event) {
        var success = false;
        var element;
        jQuery.each(mandatoryFields, function(index, value) {
            element = jQuery('#powermaildiv_uid'+value+' input, #powermaildiv_uid'+value+' select')

            element.each(function() {
                // add class required to all fields
                jQuery(this).addClass('required');

                // is the element hidden, return true
                if(jQuery(this).hasClass('fieldHidden') == true || jQuery(this).is(':disabled')) {
                    success = true;
                } else {
                    // is the input field empty, return false
                    if(jQuery(this).val().length === 0) {
                        success = false;

                    // is the input field not empty, return true
                    } else {
                        // is the input field false, return false
                        if(jQuery(this).val() == 'disabled') {
                            success = false;
                        } else {
                            success = true;
                        }
                    }
                }

                // For each element add/remove validation class
                if(success == false) {
                    jQuery(this).addClass('validation-failed').removeClass('validation-passed');
                } else {
                    jQuery(this).addClass('validation-passed').removeClass('validation-failed');
                }
            });
        });

        // if succes is false, show error message and return false
        if(success == false) {
            jQuery('#c1799').fadeIn().css('display', 'block');
            event.preventDefault();
            return false;
        } else {
            jQuery('#c1799').fadeOut();
        }
    });
}

Firefox、Chrome ie9 では動作しますが、7 または 8 では動作しません。IE7 または 8 では、すべてランダムに要素にクラスが追加されます。
select要素を検証すると合格するが、入力フィールドは失敗するようです

何が間違っている可能性がありますか?

編集: ここにページがあります: http://asdf.patrikelfstrom.se/index.php?id=267 JS
を表示する小さなフォームの場合は 1234 と入力します: http://asdf.patrikelfstrom.se/typo3conf/ext/ gc_fm/res/js/ShowAndHideFields.js

送信 (absenden) を押すと、フィールド Türnummer は緑色 (chrome、firefox などの場合) になるはずですが、ie7/8 では赤色になります。

Wähle... (選択ボックス) をクリックして Wohnung を選択すると、その下のフィールドが有効になり、今すぐ送信を押すと、要素が表示されて空であるため、Türnummer は赤く表示されます。
これは機能しているように見えますが、選択ボックスをもう一度クリックして einfamilienhaus を選択すると.
フィールドは無効になり、送信時に緑色になるはずですが、IE7/8 ではそうではありません。

4

2 に答える 2

1

elementオブジェクトのコレクションになるので、をループする必要があると思います。

// is the element hidden, return true
element.each(function() {
   if($(this).hasClass('fieldHidden') == true) {
   ...

})

要点を示すために、実際に何を変更する必要があるかはコードによって異なります

于 2012-04-24T17:00:38.550 に答える
0

選択からを削除(value="false")します。

于 2012-04-25T09:03:34.900 に答える