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),但它仍然不起作用