2011-08-03 40 views
0

我不是在尋找一個插件,只需要簡單的jQuery函數和regexp。我對CSS或PHP/SSI解決方案也不感興趣。需要使用jQuery解決方案將輸入值更改爲UpperCase,Capitalize,Numbers only,Symbols Only和AlphNumeric Only on keyup

鑑於這一點,我有以下代碼片段,目前無法正常工作。我希望保持類似的選擇器格式,正則表達式syntex也被單獨測試。所以,請看代碼並讓我知道問題是什麼。

在此先感謝。

代碼鏈接:http://jsfiddle.net/TnpZY/1/

Currernt代碼:

$('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

你capitalizet功能是造成問題。請參閱here

 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(); 
     } 
+0

你也可以告訴我,我怎麼可以編寫,以便它添加爲$ .extend功能,我將能夠使用它像$(」 .class')。validator({uppercase:true}); ? – Tumharyyaaden

+0

@Tumharyyaaden抱歉,我不知道:S從來沒有嘗試過。 –