jQuery验证,日期格式mm / yyyy在keyup上验证

时间:2015-06-22 13:32:30

标签: jquery validation

我需要验证我的输入字段,然后再使用Stripe将其处理为付款。

对于卡号,我创建了一个输入框:

<input type="text" class="credit-card" id="cardnumber" name="cardnumber" size="30" value="" placeholder="XXXX-XXXX-XXXX-XXXX">

我以每4位数字自动放置-的方式对其进行验证:

String.prototype.toCardFormat = function () {
     return this.replace(/[^0-9]/g, "").substr(0, 16).split("").reduce(cardFormat, "");
function cardFormat(str, l, i) {
    return str + ((!i || (i % 4)) ? "" : "-") + l;
   }
};
$(".credit-card").keyup(function () {
      $(this).val($(this).val().toCardFormat());
});

现在我需要在用户开始输入mm时验证日期,它会自动添加/并以格式mm/yyyy生成。所以这应该是有效的日期:

05/2016

但不是这些:

13/2018
05/2006
5/19
05/19
06-2019
05 2019

此外,我使用replace方法限制用户输入ant文本和符号。

3 个答案:

答案 0 :(得分:1)

您可以使用此API验证信用卡输入。 http://jquerycreditcardvalidator.com/ 或者查看关于Stripe API验证的博客。 https://stripe.com/blog/jquery-payment

答案 1 :(得分:1)

使用插件Jquery验证验证字段的最佳选择。 请查看以下链接: http://jqueryvalidation.org/creditcard-method/

答案 2 :(得分:1)

onkeyup我调用了名为mdate&gt;&gt;

的函数
function mdata(v){
    v=v.replace(/\D/g,""); //Remove what is not a digit
    v=v.replace(/(\d{2})(\d)/,"$1/$2");       
    v=v.replace(/(\d{2})(\d)/,"$1/$2");       

    v=v.replace(/(\d{2})(\d{2})$/,"$1$2");
    return v;
}

它将显示29/04/2000并自动输入“/".

我把它放在html中,它对我有用。