2017-02-02 8 views
0

Ich versuche, ein Datum zu formatieren, wie der Benutzer das Eingabefeld eingibt, indem Sie ihm eine Klasse zuweisen, die innerhalb einer Funktion ist. Ich weiß seine Zündung aber etwas ist ganz richtig das [object] in das Eingabefeld werfen. Mein Endziel ist es, wie der Benutzer tippt es sich um eine/nach den ersten beiden Zeichen und dann noch einer/nach der nächsten zwei werfen: 01/01/2017jQuery Format Datum am Eingang

Code:

$(document).off('keydown', '.dateField'); 
    $(document).on('keydown', '.dateField', function(e){ 
     var start = this.selectionStart, 
      end = this.selectionEnd; 

      if($(this).val().replace(/[^\d]/g,"").length<$(this).val().length) 
       end = end-1; 

      $(this).val($(this).toString().substr(0,2)+"/"+$(this).toString().substr(2)); 

      this.setSelectionRange(start, end); 
    } 

AKTUALISIERT Code:

$(document).on('keydown', '.dateField', function(e){ 

    $(this).attr('maxlength', '10'); 

    var key=String.fromCharCode(e.keyCode); 

    if(!(key>=0&&key<=9)){ 
     $(this).val($(this).val().substr(0,$(this).val().length-1)); 
    } 

    var value=$(this).val(); 

    if(value.length==2||value.length==5){ 
     $(this).val($(this).val()+'/'); 
    } 

Dies verhindert nicht Buchstaben und Symbole, wie ich Regex hinzufügen, um dieses Problem zu vermeiden. (Super Noob bei egex)

+0

Ich glaube, Sie wollen 'val()' ', wo Sie toString haben()' - '$ (this) .toString()' ist nicht um den Inhalt des Datumsfeldes zu bekommen, was du willst. –

+0

@JacobMattison, das ein "/" auf jede Taste wirft, drücken Sie $ (this) .val ($ (this) .val(). Substr (0,2) + "/" + $ (this) .val() .substr (2)); ' – Charles

+0

mögliches Duplikat von [dies] (http://stackoverflow.com/questions/19709559/how-to-auto-format-textbox-inputs) – Jag

Antwort

0

finale Code:

$(document).off('keydown', '.dateField'); 
    $(document).on('keydown', '.dateField', function(e){ 

     $(this).attr('maxlength', '10'); 

     if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 || 
      // Allow: Ctrl+A, Command+A 
      (e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) || 
      // Allow: home, end, left, right, down, up 
      (e.keyCode >= 35 && e.keyCode <= 40)) { 
       // let it happen, don't do anything 
       return; 
     } 
     // Ensure that it is a number and stop the keypress 
     if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { 
      e.preventDefault(); 
     } 

     var value=$(this).val(); 

     if(value.length==2||value.length==5){ 
      $(this).val($(this).val()+'/'); 
     } 
}