如果高于31,则jQuery将日输入替换为00

时间:2015-04-30 15:13:39

标签: jquery replace keyup

我目前正在处理年龄验证页面,我需要制作一个jQuery脚本来检查日期是否正确,转到下一个输入并验证用户。

//Age Verification
$('.inp .day, .inp .month, .inp .year').on('keyup', function () {
    this.value = this.value.replace(/[^0-9\.]+/g, '');
});
$('.inp .day').on('keyup', function () {
    if (this.value >= 32) {
        this.value.replace(/[^0-9\.]+/g, '');
    } if (this.value.length >= 2) {
        $('.inp .month').focus();
    }

});
$('.inp .month').on('keyup', function () {
    if (this.value >= 13) {
        this.value.replace(/[^0-9\.]+/g, '');
    }
    if (this.value.length >= 2) {
        $('.inp .year').focus();
    }
});

这就是我创建的内容,除了for day(if (this.value >= 32))和month(if (this.value >= 13))的两个if语句外,它的工作正常。

任何帮助都将不胜感激。

谢谢:)

4 个答案:

答案 0 :(得分:2)

不应该

if (this.value >= 32) {
    this.value.replace(/[^0-9\.]+/g, '');

if (this.value >= 32) {
    this.value = 0;

我不知道> = 32的值是如何被要求做的不同于

$('.inp .day, .inp .month, .inp .year').on('keyup', function () {
  this.value = this.value.replace(/[^0-9\.]+/g, '');
});

已经在做

答案 1 :(得分:1)

试试这个:

$('.inp .day').on('keyup', function () {
    if(this.value > 31)
    {
        this.value = "00";
    }
    else if (this.value.length >= 2) {
        $('.inp .month').focus();
    }
});

答案 2 :(得分:0)

//Age Verification
$('.inp .day, .inp .month, .inp .year').on('keyup', function () {
    var $this = $this,
        thisVal = $this.val().replace(/[^0-9\.]+/g, '');
    $this.val(thisVal);
});
$('.inp .day').on('keyup', function () {
    var $this = $this,
        thisVal = $this.val();
    if (thisVal >= 32) {
        $this.val('');// or whatever it should be...31?
    }else if (thisVal.length >= 2) {
        $('.inp .month').focus();
    }

});
$('.inp .month').on('keyup', function () {
    var $this = $this,
        thisVal = $this.val();
    if (thisVal >= 13) {
        $this.val('');// or whatever it should be...12?
    }else if (this.value.length >= 2) {
        $('.inp .year').focus();
    }
});

答案 3 :(得分:0)

如果您希望在用户输入无效数据时该值为空,那么为什么不这样做:

$('.inp .day, .inp .month, .inp .year').on('keyup', function () {
    this.value = ""; //Make it a blank string
});
$('.inp .day').on('keyup', function () {
    if (this.value >= 32) {
        this.value = ""; //Make it a blank string
    } if (this.value.length >= 2) {
        $('.inp .month').focus();
    }
});
$('.inp .month').on('keyup', function () {
    if (this.value >= 13) {
        this.value = "";//Make it a blank string
    }
    if (this.value.length >= 2) {
        $('.inp .year').focus();
    }
});