如何在jquery中键入时自动添加点?

时间:2015-06-12 07:56:26

标签: jquery regex date textbox

我有一个带有日期字段的表单,用户必须在其中键入数字,点会自动格式化值。例如:用户设置056,当他在添加5之后按下6点时。我想以dd.mm.yyyy格式制作它,但由于它只是文本输入,我现在正在处理我不必定义这三个属性。到目前为止我的代码:

    $(document).ready(function(){
        $('#date').keyup(function(event){
        if(event.which >= 37 && event.which <= 40){
           event.preventDefault();
    }
        var $this = $(this);
        var num = $this.val().replace(/,/gi, "").split("").reverse().join("");

        var num2 = RemoveRougeChar(num.replace(/(.{2})/g,"$1,").split("").reverse().join(""));

          console.log(num2)
          $this.val(num2);


        if(convertString.substring(0,4) == ".") {
            return convertString.substring(2, convertString.length)  }
            return convertString;}

当我输入前两位数字时,会在值前面显示逗号,就在输入第三个数字后,将移动逗号。如何编写代码,以便用逗号替换逗号并添加两次:第一个数字后的数字和第二个月后的数字?

1 个答案:

答案 0 :(得分:0)

您可以使用我为此目的编写的脚本:

var dateFormatter = function () {    
    if (!arguments) return;        
    this.dateInputFields = arguments;
    this.isFormatted = false;        

    (function ($) {
        $.fn.getCursorPosition = function () {            
            var input = this.get(0);
            if (!input) return; // No (input) element found
            if (document.selection) {
                // IE
                input.focus();
            }
            return 'selectionStart' in input ? input.selectionStart : '' ||
                Math.abs(document.selection.createRange().moveStart('character', -input.value.length));
        }
    })( jQuery );

    function setEvents() {        
        for (var i = 0; i < this.dateInputFields.length; i++) {
            $(this.dateInputFields[i]).keyup(function (e) {                
                if (e.keyCode == 8 || e.keyCode == 46) return;
                s = e.target.value;
                var caretPos = $(e.target).getCursorPosition();
                if (caretPos == 2) s.length > 2? e.target.value[3] = '.' : e.target.value += '.';
                if (caretPos == 5) s.length > 5 ? e.target.value[5] = '.' : e.target.value += '.';
                if (caretPos == 10) s.length > 10 ? e.target.value[11] = ' ' : e.target.value += ' ';
                if (caretPos == 13) s.length > 13 ? e.target.value[10] = ':' : e.target.value += ':';
            });
        }
        this.isFormatted = true;
    };

    setEvents();
};

将其另存为dateFormatter.js

在你的html之前连接它(!)除了jquery之外的任何其他脚本。 在其他脚本中,你只需添加一行:

var dtFormat = dateFormatter($ selector1,$ selector2等);

用你的选择器改变$ selector1(在我的例子中,它是输入id #changesDate)。您可以传递多个“选择器”参数。

示例:http://embed.plnkr.co/2ahM90nNlhgRH4yCD6Y2/preview