开发者

Need jQuery solution to change input values to UpperCase, Capitalize, Numbers only, Symbols Only and AlphaNumeric Only on keyup

I am NOT looking for a plug-in, just need simple jQuery function with regexp. I am also NOT interested in CSS or PHP/SSI solutions.

Given that, I have the following snippet of code which is currently is not working. I wish to keep similar selector format, the regexp syntex has 开发者_Go百科been tested individually too. So, please look at the code and let me know what the problem is.

Code link: http://jsfiddle.net/TnpZY/1/

Currernt Code:

    $('input').live('keyup', function(e) {
        var val = this.value;

        var defaults = {
            format: 'numeric',
            uppercase: false,
            lowercase: false,
            capit: false,
            nospace: false,
            pattern: null
        };

        switch(defaults.format)
        {
            case 'text':
                var pattern = new RegExp('[0-9]+', 'g');
                val = val.replace(pattern, '');
                break;

            case 'alpha':
                var pattern = new RegExp('[^a-zA-Z]+', 'g');
                val = val.replace(pattern, '');
                break;

            case 'number':
            case 'numeric':
                var pattern = new RegExp('[^0-9]+', 'g');
                val = val.replace(pattern, '');
                break;

            case 'alphanumeric':
                var pattern = new RegExp('[^0-9a-zA-Z]+', 'g');
                val = val.replace(pattern, '');
                break;

            case 'custom':
                var pattern = new RegExp(defaults.pattern, 'g');
                val = val.replace(pattern, '');
                break;

            case 'all':
            default:
                if(typeof defaults.format == 'function')
                    var val = defaults.format(val);

                break;
        }

        if(defaults.nospace)
        {
            var pattern = new RegExp('[ ]+', 'g');
            val = val.replace(pattern, '');
        }

        if(defaults.uppercase)
            val = val.toUpperCase();

        if(defaults.lowercase)
            val = val.toLowerCase();

        if(defaults.capit)
            String.prototype.capitalizet = function(){    return this.charAt(0).toUpperCase() + this.slice(1);  }
            val = val.capitalizet();

        if(val != this.value)
            this.value = val;
    });


Your capitalizet function was causing the problem. See here.

        if(defaults.capit)
            String.prototype.capitalizet = function(){    return this.charAt(0).toUpperCase() + this.slice(1);    }
            val = val.capitalizet();

should be

        if(defaults.capit) {
            String.prototype.capitalizet = function(){    return this.charAt(0).toUpperCase() + this.slice(1);    }
            val = val.capitalizet();
        }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜