对象不支持IE8中的trim方法

时间:2014-02-12 22:18:46

标签: javascript jquery object methods internet-explorer-8

我已经通过javascript编写了表单验证,它适用于除ie8之外的所有浏览器。我在 IE8 中看到的错误说:对象不支持此属性或方法并指向带有“var firstnameObject”的行。页面加载后立即显示此错误。代码不仅仅是这个,但是我不想用不必要的内容来填充这个问题。

有没有人对我收到此错误的原因有任何线索/建议?感谢任何帮助,谢谢!

var generalMethods = {
    //Validate Alpha
    validateAlphaFields : function(field){
                console.log(field)
                var currentValue = $(v[field]).val();
                console.log('current value:' + currentValue);
                    if (!currentValue || !currentValue.match(/^[A-z]+$/)){
                        $(v[field]).addClass('Invalid');
                        $('#s-'+ field).html(eval(field + 'Object.labelName'));
                    } else{
                        $(v[field]).removeClass('Invalid');
                        $('#s-'+ field).empty();
                    }
                return generalMethods.testSubmit();
    }
    //Enable submit button if parameter === 'enable', else disable submit button
    ,disableEnable : function(condition){
                if (condition === 'enable'){
                    //Enable submit button
                    $('#form_submit_button, #form-submit-button').removeAttr('disabled');
                }
            }
    //Test all fields to enable Submit Button
    ,testSubmit : function(){
                var invalidCount = 0;
                $('#errorMessage span').each(function(){
                    if ($(this).text().trim().length){
                        invalidCount++;
                    }
                });
                    //Disable submit if any invalid fields
                    if (invalidCount < 1){
                        generalMethods.disableEnable('enable');
                        $('#errorMessage').css('display','none');
                        return true;
                    } else{
                        $('#errorMessage').css('display','block');
                        return false;
                    }
                }
}

//Validate Fields Objects
//=====================================================
var firstnameObject = {
            labelName : $('#sfield_firstname label').text().trim()
            ,validate : generalMethods.validateAlphaFields
}

2 个答案:

答案 0 :(得分:7)

IE9中添加了trim String方法,因此在IE8中无法使用。使用$.trim()代替跨浏览器兼容性:

var firstnameObject = {
            labelName : $.trim($('#sfield_firstname label').text()),
            ,validate : generalMethods.validateAlphaFields
}

答案 1 :(得分:-2)

$(document).ready(function() {
    $('#btnsubmit').click(function() {

        if ($.trim($('#TextCust').val()).length == 0) {
            alert("Please Enter Customer Name");
            return false;
        }

    });
});

这就是你应该如何使用验证,它可以在所有浏览器中使用。