我使用java脚本方法检查字段是否有效,以便表单可以继续。这很好,直到它到达后代码,因为它必须是一个特定的模式。
无论如何都要检查字段的值是否与模式匹配,然后允许表单继续。
正如您所看到的,如果长度大于0,则设置为仅允许表单进度,这对于表单不利,但对于邮政编码部分则更糟。
使用Javascript:
function processPhase2(){
houseN = _("Hnumber").value;
lineone = _("Caddress1").value;
linetwo = _("Caddress2").value;
cityC = _("Ccity").value;
countyC = _("Ccounty").value;
postalcodeC = _("Cpostalcode").value;
if(houseN.length > 0 && lineone.length > 0 && cityC.length > 0 && countyC.length > 0 && postalcodeC.length > 0){
_("phase2").style.display = "none";
_("phase3").style.display = "block";
_("progressBar").value = 66;
_("status").innerHTML = "Phase 3 of 3";
} else {
}
}
输入字段:
<label for="postalcode">Postal Code</label>
<input type="text" name="Cpostalcode" id="Cpostalcode" size="20" required pattern="[A-Za-z]{1,2}[0-9Rr][0-9A-Za-z]? [0-9][ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2}" placeholder="eg: W1C 8LT" title="Must match pattern">
答案 0 :(得分:1)
使用getAttribute
抓取模式并将其应用于new RegExp(pattern)
。然后,您可以使用RegExp test
方法。
var elem = document.getElementById("Cpostalcode");
var pattern = elem.getAttribute("pattern");
var re = new RegExp(pattern);
if (re.test(elem.value)) {
// Pattern matches!
} else {
// Pattern does NOT match.
}
<强> JSFiddle 强>
注意:您应该将开头(^
)和结束($
)字符添加到您的模式,否则它将测试子字符串而不是整个字符串进行测试。您可以使用var re = new RegExp("^"+pattern+"$")
或pattern
属性本身执行此操作。 (More on that...)