我为自己的日期使用MM / YY格式的遮罩。必须是 month> =然后是当前,并且 year> =然后是当前年。
我在这里有正则表达式模式:
<input id="expiration" type="tel" placeholder="MM/YY" class="masked" pattern="(1[0-2]|0[1-9])\/(1[8-9]|2\d)" data-valid-example="12/18" onchange="onChangeInput(event)"/>
这种格式似乎还可以,但是我仍然可以写不到18年的年份。
需要您的帮助,堆栈溢出。
答案 0 :(得分:0)
该模式似乎很好,但是如使用输入类型tel所指出的那样,由于语义上的不一致,可能不是一个好主意。
您可能会尝试使用脚本,而不是依赖浏览器验证,因为支持不完整。类似于以下内容的东西。
function validateInput(evt) {
var re = new RegExp(this.pattern);
var s = this.value;
// Show whether value is valid or not when input is full
document.querySelector('#s0').textContent = s.length < 5 || re.test(s)? '' : 'Invalid';
}
window.onload = function(){
document.querySelector('#i0').addEventListener('input',validateInput, false);
};
<input id="i0" type="text" placeholder="MM/YY" pattern="(1[0-2]|0[1-9])\/(1[8-9]|2\d)" maxlength="5"><br>
<span id="s0"></span>