当我将其插入文本字段中的pattern属性时,它不接受应该接受的输入。但是,它已被接受并经过测试here。
这是我从1900年到2019年连续两年检查的正则表达式。例如2001-2002
pattern="(^((?=\d{4}-\d{4})(?=[0-9]{4}$|1999-2000|([0-9]{2})[0-8]9-\1[1-9]0|([0-9]{3})[0-8]-\2[1-9])(?:19|20)(?=[^-]*$|([0-9]).*\3.$|09.*10$|19.*20$|29.*30$|39.*40$|49.*50$|59.*60$|69.*70$|79.*80$|89.*90$|99.*00$)[0-9](?=[^-]*$|0.*1$|1.*2$|2.*3$|3.*4$|4.*5$|5.*6$|6.*7$|7.*8$|8.*9$|9.*0$)[0-9](?:-[0-9]{4})?)$)"
答案 0 :(得分:0)
我解决了这个问题,我使用 checkYear 来解析它来检查年份。但即使它提醒和工作,用户仍然可以通过输入提交它,所以我添加了功能 check2 ,并在页面的每个加载上,我调用该函数来检查是否输入有效。如果是,那么启用提交按钮,如果没有,则禁用。
<script>
function checkYear() { //checks year
var year = document.getElementById('hpw').value.split('-');
if((parseInt(year[0])+1==parseInt(year[1]))&&(parseInt(year[0])>=1900)&&(parseInt(year[1])<=2099)){
alert('Great!');
return 1;
}
else{
alert('Year should be consecutive (e.g 2011-2012)');
document.getElementById('hpw').select();
return 0;
}
}
function check2() { //disables button if checkYear is not met so that it will prohibit the submission of the form if it is failed - acts like required plus pattern attribute of html
if(checkYear()==0){
//alert('fail2!');
document.getElementById('submitbutton').disabled = true;
}
else{
//alert('Great2!');
document.getElementById('submitbutton').disabled = false;
}
}
window.onload = function() { //every load, check the fields to be checked
check2();
}
</script>