2017-02-02 134 views
0

我试图格式化日期,因为用户通过给函数内部分配一个类来进入输入字段。我知道它的射击,但是在投入领域抛出[object]是非常正确的。我的最终目标是为用户类型的前两个字符后,它会抛出一个/,然后另一/下两个后:01/01/2017输入的jQuery格式日期

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

更新的代码:

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

这不防止字母和符号我如何添加正则表达式来防止此问题。 (在egex超级小白)

+0

我想你想'缬氨酸()',你有'的toString(' - '$(本)的ToString()'不去获取日期字段的内容,这是你想要的。 –

+0

@JacobMattison在每次按键时抛出一个“/”$(this).val($(this).val()。substr(0,2)+“/”+ $(this).val() .substr(2));' – Charles

+0

[this]可能的重复(http://stackoverflow.com/questions/19709559/how-to-auto-format-textbox-inputs) – Jag

回答

0

终极密码:)

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