2011-10-07 13 views
9

私はテキストフィールドを持っており、ユーザーはSSN番号を入力します。それ自身を入力する間にそれはフォーマットする必要があります。 TextFieldの変更のように、ディスプレイ自体にこのようにフォーマットする必要があります。999-999-999番号を入力中にSSNの自動フォーマット

答えて

5
<input id="ssn"/> 

<script type="text/javascript"> 
    $('#ssn').keyup(function() { 
     var val = this.value.replace(/\D/g, ''); 
     var newVal = ''; 
     while (val.length > 3) { 
      newVal += val.substr(0, 3) + '-'; 
      val = val.substr(3); 
     } 
     newVal += val; 
     this.value = newVal; 
    }); 
</script> 
+4

実際には、社会保障番号は '000-00-0000'の形式です。 – ca9163d9

20

@kottenatorからスクリプトがほとんどだったが、それは価値に社会保障番号のために必要な000-00-0000のように、その後、すべての3桁の数字の代わりに、3、2を、壊します。

少し編集して意図したとおりに動作するように修正しました。お役に立てれば。

<script type="text/javascript"> 
     $('#ssn1').keyup(function() { 
      var val = this.value.replace(/\D/g, ''); 
      var newVal = ''; 
      if(val.length > 4) { 
      this.value = val; 
      } 
      if((val.length > 3) && (val.length < 6)) { 
      newVal += val.substr(0, 3) + '-'; 
      val = val.substr(3); 
      } 
      if (val.length > 5) { 
      newVal += val.substr(0, 3) + '-'; 
      newVal += val.substr(3, 2) + '-'; 
      val = val.substr(5); 
      } 
      newVal += val; 
      this.value = newVal.substring(0, 11); 
     }); 
    </script> 
+0

私はそれがあなたが置くことができる文字の数を制限する方法も好きです – Jay

0

デニスのスクリプトを修正して、jquery要素を少し削除しました。なぜ最初の2つのif節が追加されたのか不明なので、この関数から削除しました。この関数は、underscore.jsを使用するTitanium SDKのリスナーです。しかし、他のJS APIと連携するように変更することができます。

$.usernameField.addEventListener('blur', function(param) { 

    var inputString = param.value; 

    if (inputString.length === 9 && _.isNumber(parseInt(inputString, 10))) { 

     var val = inputString.replace(/\D/g, ''); 

     var outputString = ''; 

     outputString += val.substr(0, 3) + '-'; 
     outputString += val.substr(3, 2) + '-'; 
     val = val.substr(5); 
     outputString += val; 

     $.usernameField.value = outputString; 

    } 
}); 
+0

OPはそのタグにJavaScriptをリストしました。あなたはTitanium SDKとunderscore.jsについて何も知らないかもしれないので、あなたの答えに他のAPIを混在させないようにするべきです –

1
$('#ssn').keyup(function() { 
    var val = this.value.replace(/\D/g, ''); 
    var newVal = ''; 
    var sizes = [3, 2, 4]; 

    for (var i in sizes) { 
     if (val.length > sizes[i]) { 
     newVal += val.substr(0, sizes[i]) + '-'; 
     val = val.substr(sizes[i]); 
     } 
     else 
     break;   
    } 

    newVal += val; 
    this.value = newVal; 
}); 
4

デニスの答え@しかし、それはセレクタを行うためのjQueryを使用し、OPだけではJavaScript、このポストにjQueryのタグを持っていなかった、ここでは最高でした。ここでは、ソリューションのバニラJSバージョン(またはそれを行う少なくとも1つの方法:)

document.getElementById("ssn").onkeyup = function() { 
    var val = this.value.replace(/\D/g, ''); 
    var newVal = ''; 

    if(val.length > 4) { 
    this.value = val; 
    } 

    if((val.length > 3) && (val.length < 6)) { 
    newVal += val.substr(0, 3) + '-'; 
    val = val.substr(3); 
    } 

    if (val.length > 5) { 
    newVal += val.substr(0, 3) + '-'; 
    newVal += val.substr(3, 2) + '-'; 
    val = val.substr(5); 
    } 

    newVal += val; 
    this.value = newVal; 
}; 
関連する問題