Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery addClass在IE 7或IE 8中不起作用_Javascript_Jquery_Internet Explorer - Fatal编程技术网

Javascript jQuery addClass在IE 7或IE 8中不起作用

Javascript jQuery addClass在IE 7或IE 8中不起作用,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,这是一个验证脚本 当用户按下表单上的submit按钮时,此代码将运行 它循环遍历所有必填字段(在数组中输入)和… 1.检查元素是否隐藏 2.如果不是,它是空的吗? 3.如果不是,那是假的吗?(我使用false作为不可选择选项的值) 所有这些都将变量设置为true或false // when submitting the registration form function mandatoryCheck() { jQuery('.tx-powermail-pi1_formwrap_1723

这是一个验证脚本
当用户按下表单上的submit按钮时,此代码将运行 它循环遍历所有必填字段(在数组中输入)和…
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、ChromeIE9,但不适用于IE7或IE8。 IE7或IE8将类添加到所有随机元素中。

如果我验证一个select元素,它会通过,但输入字段会失败

有什么不对劲

编辑: 页面如下:
如果在显示的小表单中输入1234
JS:

如果按submit(absenden),则Türnummer字段应为绿色(如chrome、firefox等),但在ie7/8中为红色

如果你点击Wähle。。。(选择框)并选择“打开”,其下的字段将变为启用状态,如果按“立即提交”,则turnummer将变为红色,因为元素可见且为空。
这似乎可行,但如果您再次单击选择框并选择eInfamilianHaus。

这些字段被禁用,在提交时应为绿色,但IE7/8中并非如此。

我认为您需要在
元素中循环,因为它将是一个对象集合,所以您可以

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

})

好的,为了说明这一点,根据您的代码,您需要实际更改什么

从您的选择中删除
(value=“false”)

您能否详细说明“IE7或IE8将类全部随机添加到元素中。”?你这是什么意思?好像我验证了一个select元素,但是输入字段失败了。你发布HTML和/或一个JSFIDLE来说明这个问题怎么样?@j08691我试过复制代码,但在IE的JSFIDLE中没有得到相同的错误…@j08691好的,我有一个示例站点:这似乎没有帮助。该脚本仍然有效,但在ie7或IE8中不起作用。我创建了一个JSFIDLE,但它可以工作:(在代码中,您有{if(jQuery(this).val()='')}这将失败,因为您将有jQuery(this).val()返回“false”,但如果值为“false”(字符串),它不等于“”(空字符串),并且不会失败?我没有意识到en空字符串是false。我将它改为if(jQuery)(this.val().length==0),但它仍然不起作用