Нужно решение jQuery для изменения входных значений на UpperCase, Капитализировать, Только цифры, Только символы и Только алфавитно-цифровые только на клавиатуре - PullRequest
0 голосов
/ 03 августа 2011

Я НЕ ищу плагин, просто нужна простая функция jQuery с регулярным выражением. Я также НЕ заинтересован в решениях CSS или PHP / SSI.

Учитывая это, у меня есть следующий фрагмент кода, который в настоящее время не работает. Я хочу сохранить подобный формат селектора, синтаксис регулярных выражений также был протестирован индивидуально. Поэтому, пожалуйста, посмотрите на код и дайте мне знать, в чем проблема.

Кодовая ссылка: http://jsfiddle.net/TnpZY/1/

Текущий код:

    $('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;
    });

1 Ответ

1 голос
/ 03 августа 2011

Ваша функция capitalizet вызывала проблему. Смотрите здесь .

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

должно быть

        if(defaults.capit) {
            String.prototype.capitalizet = function(){    return this.charAt(0).toUpperCase() + this.slice(1);    }
            val = val.capitalizet();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...