【问题标题】:jQuery format date on input输入时的jQuery格式日期
【发布时间】:2017-06-19 18:54:00
【问题描述】:

我正在尝试在用户输入输入字段时通过为其分配一个函数内部的类来格式化日期。我知道它的触发,但它在输入字段中抛出 [object] 是完全正确的。我的最终目标是当用户键入时,它会在前两个字符之后抛出一个 /,然后在接下来的两个字符之后抛出另一个 /:01/01/2017

代码:

    $(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 的超级菜鸟)

【问题讨论】:

  • 我想你想要val() 那里有toString() -- $(this).toString() 不会得到你想要的日期字段的内容。
  • @JacobMattison 在每次按键时都会抛出一个“/”$(this).val($(this).val().substr(0,2)+"/"+$(this).val().substr(2));
  • this 的可能重复项
  • @JAG 谢谢!请回答问题,以便我给你信用

标签: javascript jquery html


【解决方案1】:

最终代码:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多