将输入字段与模式匹配

时间:2014-08-07 13:57:33

标签: javascript html html5

我使用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">

1 个答案:

答案 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...