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 但不适用于 ie 7 或 8。IE7 或 8 将类添加到所有随机的元素中。
似乎如果我验证它通过但输入字段失败的选择元素

有什么问题?

编辑:这是页面:http
://asdf.patrikelfstrom.se/index.php?id= 267 如果以显示
JS 的小形式输入 1234:http: //asdf.patrikelfstrom.se/typo3conf/ext/ gc_fm/res/js/ShowAndHideFields.js

如果您按下提交(缺席)字段 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 回答