jQuery掩码只允许某些数字组合

时间:2016-03-22 20:31:25

标签: javascript jquery

我正在尝试设置jQuery掩码插件,只接受字段最后两位数字的某些数据。

我想要的是:YYYY [03],YYYY [06],YYYY [09],YYYY [12]被标记为有效且所有其他输入被标记为无效。

示例:

  • 201612:有效
  • 201511:无效
  • 200403:有效
  • 201102:无效

到目前为止,我所拥有的是:

$('#YearMonth').mask('0000XZ', {
    translation: {
      'X': {
        pattern: /[0-1]/, optional: true
      },
      'Z': {
        pattern: /[0-9]/, optional: true
      }
    }
});

当然;这仍然无法正常工作。如果有办法使用jQuery掩码插件来做到这一点?或者我应该尝试另一种方法吗?

谢谢

2 个答案:

答案 0 :(得分:1)

普通的javascript,使用正则表达式

/\d{4}03|06|09|12/  

function validation(s) {
    var r = /\d{4}03|06|09|12/;
    return s.match(r) ? s + ": Valid" : s + ": Invalid";
}

//test
["201612", "201511", "200403", "201102"].forEach(e =>
    document.write(validation(e) + '<br>'));

答案 1 :(得分:0)

您可以将RegExp属性与\d{4}(0[369]|12) required一起使用;如果input value为空字符串,请添加oninput属性以阻止提交。如果inputvalue不匹配,您还可以使用pattern事件清除input字段。如果value RegExppattern属性document.getElementById("YearMonth") .oninput = function(e) { if (this.value.length === this.maxLength && !new RegExp(this.pattern).test(this.value)) { alert("Invalid input\n" + this.title); this.value = ""; } }不匹配,则表单不应提交。

&#13;
&#13;
<form>
  <label for="YearMonth">
    <input id="YearMonth" type="text" pattern="\d{4}(0[369]|12)" minlength="6" maxlength="6" title="Input: YYYY[03] OR YYYY[06] OR YYYY[09] OR YYYY[12]" placeholder="YYYY[03,06,09,12]" required />
  </label>
  <input type="submit" />
</form>
&#13;
Platform.getBundle("").getEntry("")
&#13;
&#13;
&#13;