【问题标题】:how to run a function with parameters如何运行带参数的函数
【发布时间】:2013-09-04 17:26:02
【问题描述】:

我有一个简单地验证表单的功能(对于旧浏览器)。该函数工作得很好,除了我每次调用这个函数时都必须传递参数,实际上我已经在'config'中指定了默认参数。

所以按照逻辑,如果我将函数调用为:validateMe();,它应该以validateMe({requiredClass: '.required', verifiedClass: 'invalid'}); 运行

但不幸的是,不带参数调用函数无法正常工作(在我的情况下,表单触发了提交事件)(它没有达到return false)。

那么使用默认设置运行函数的代码中缺少什么??

function validateMe(vform, settings) {

    var vform,      //form name or id
        config = {
            'requiredClass': '.required', 
            'verifiedClass': 'invalid'
        };
    if (settings) {
        $.extend(config, settings);
    }

    $(vform).on('submit', function(){

        var inputs =  $(this).find(config.requiredClass), 
            required = [];
        for (i=0; i < inputs.length; i++) {

            if (inputs[i] != null) {
                if ($(inputs[i]).val().replace(/^\s+|\s+$/g, '') == '') {
                    required.push($(inputs[i]).index());
                }
            }
        }

        if (required.length > 0) {
            $(this).find('input').removeClass(config.verifiedClass);
            for(n=0;n<required.length;n++) {
                $(inputs[n]).addClass(config.verifiedClass);
            }
            return false;   
        }

    });
}

有什么帮助吗?

谢谢。

【问题讨论】:

    标签: javascript function optional-parameters


    【解决方案1】:
    function validateMe(vform, settings) {
    this.vform = vform || 'default',
    this.setting = 'whatever',
    this.private = ''
    }
    var newInstance = new validateMe();
    

    现在您有了它的一个实例,因此您可以随时定义它。

    【讨论】:

    • 不,它没有,它在函数定义中?这是基本的装饰器模式,也许你正在考虑 $(this)
    • 所以?接下来是什么? jsfiddle 中的警报返回“默认”。这是什么意思?
    • 好吧,我不想告诉你,但这不是你使用它的方式。你说 var newInstance = new validateMe();然后尝试一下,你会得到未定义的。
    • 真正的问题是上面这个人想在不知情的情况下使用像对象这样的函数;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多