Domanda Formattare automaticamente SSN durante l'immissione del numero


Ho un campo di testo e l'utente inserisce il numero SSN. Mentre entra in se stesso dovrebbe formattare. Come sulla modifica del campo testo ... dovrebbe essere formattato 999-999-999 in questo modo sul display stesso.


10
2017-10-07 09:12


origine


risposte:


<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
2017-10-07 09:26



Lo script di @kottenator era quasi arrivato, ma rompe il valore ogni 3 cifre, anziché 3, quindi 2, come il 000-00-0000 necessario per i numeri di previdenza sociale.

Ho fatto un piccolo editing e l'ho modificato per funzionare come previsto. Spero che questo ti aiuti.

    <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>

23
2018-01-31 11:06



@ La risposta di Dennis è stata la migliore qui, tuttavia ha usato JQuery per fare il selettore e l'OP non aveva un tag JQuery su questo post, solo JavaScript. Ecco la versione VanillaJS della soluzione (o almeno un modo per farlo :)

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;
};

4
2018-04-29 17:58



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

1
2018-02-17 15:20



Ho modificato lo script di Dennis un po 'rimuovendo gli elementi jquery. Non sono sicuro del motivo per cui sono state aggiunte le prime due clausole if, quindi le ho rimosse da questa funzione. Questa funzione è un listener per Titanium SDK che utilizza underscore.js. Ma dovresti essere in grado di modificarlo per funzionare con altre API di JS.

$.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
2017-11-06 18:25