在jQuery中添加带有第二个字符的“ /”

时间:2019-03-05 09:03:42

标签: javascript jquery html regex

这里我有一个输入字段。

<input name="expiry_date" id="expiry_date" placeholder="MM / YYYY" class="form-control">

在此输入中,当用户输入其卡的到期日期时,应该在MM之后自动添加“ /”,如 03 /

我写了一个jquery代码,其中/附加,但是当我写第三个字符(如03/3)时。但是在这里,我希望它附加第二个字符(例如03之后不久)。

 $('#expiry_date').keyup(function() {
        $('#expiry_date').attr('maxlength','7');
        var curr_val = $(this).val();
        var expiry_date = curr_val.replace(/^(\d\d)(\d)$/g,'$1/$2').replace(/[^\d\/]/g,'');
        $('#expiry_date').val(expiry_date);
    });

JsFiddle链接在下面:- http://jsfiddle.net/fXnFF/2/

任何帮助将不胜感激。预先感谢。

5 个答案:

答案 0 :(得分:0)

只需将2个字符和3个数字字符替换为一个捕获组,而不是2个(编辑版本:最终将其包含2个捕获组,但第二个变为可选):< / p>

    
    $('#expiry_date').keyup(function(e) {
        $('#expiry_date').attr('maxlength','7');
        var key = e.keyCode || e.charCode;
        if( key != 8 ){
            var curr_val = $(this).val();
            var expiry_date = curr_val.replace(/^(\d\d)(\d*)?\//g,'$1/$2').replace(/^(\d\d)(\d*)?$/g,'$1/$2').replace(/[^\d\/]/g,'');
            $('#expiry_date').val(expiry_date);
        }
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input name="expiry_date" id="expiry_date" placeholder="MM / YYYY" class="form-control">

编辑已更改,因此您可以通过测试键以反斜杠删除(唯一的缺点是它将永远不会在反斜杠密钥上重新格式化)..还添加了另一个替换项,以便在现有数字之前添加数字/,它也被重新格式化(也许可以在一个更复杂的正则表达式中完成,但它可以正常工作)

答案 1 :(得分:0)

既然您总是在输入两个字符后附加一个'/',这会更简单吗?

$('#expiry_date').attr('maxlength','7'); // you only need to set this once
$('#expiry_date').keyup(function() {
    if(  $('#expiry_date').val().length == 2){
        $('#expiry_date').val($('#expiry_date').val() + "/");
    }
});

JSFiddle链接:https://jsfiddle.net/d1Lcwysa/4/

答案 2 :(得分:0)

$("#expiry_date").keyup(function() {
  $(this).attr("maxlength", "7");
  var val = $(this).val();
  val = val
    .replace(/^(\d\d)(\d)$/g, "$1/$2")
    .replace(/[^\d\/]/g, "")
    .replace(/^(\d\d)$/g, "$1/");
  $(this).val(val);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input name="expiry_date" id="expiry_date" placeholder="MM / YYYY" class="form-control">

答案 3 :(得分:0)

function GetDate() {
$('#expiry_date').attr('maxlength','7');
var curr_val = $('#expiry_date').val();
var length =curr_val.length;
    if(length==2)
        {
         $('#expiry_date').val($('#expiry_date').val() + "/");
        }

}

<input name="expiry_date" id="expiry_date" onkeyup="GetDate()"  placeholder="MM /YYYY" class="form-control">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

答案 4 :(得分:0)

解决了删除'/'

function GetDate() {
$('#expiry_date').attr('maxlength','7');
var key = event.keyCode || event.charCode;
var curr_val = $('#expiry_date').val();

var length =curr_val.length;
    if(length==2 && key!=8 )
        {
         $('#expiry_date').val($('#expiry_date').val() + "/");
        }

}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input name="expiry_date" id="expiry_date"  onkeyup="GetDate()"  placeholder="MM / YYYY" class="form-control">
相关问题