0

私はいくつかの正規表現の検証を行いました。これが私が行ったことです。

Javascript:

function fn1() {
var var1=/^(\s*|\d+)$/ 
if (document.myform.inp1.value.search(var1)==-1) {
alert("validation for digits failed")
}
}

function fn2() {
var var2=/^(?:\d+(?:,\d+)*(?:\.\d{2})?|\d+(?:\.\d{3})*(?:,\d{2})?)$/ 
if (document.myform.inp2.value.search(var2)==-1) {
alert("validation for currency failed")
}
}

function fn3() {
var var3=/^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$/ 
if (document.myform.inp3.value.search(var3)==-1) {
alert("validation for date failed")
}
}
</script>

以下は私のHTMLです。

<form name="myform">
<div id="div1">

<input type="text" name="inp1"  />
<input type="button" onClick="fn1()" value="chk1"/>
</div>

<div id="div2">

<input type="text" name="inp2" />
<input type="button" onClick="fn2()" value="chk2" />
</div>

<div id="div3">

<input type="text" name="inp3" />
<input type="button" onClick="fn3()" value="chk3" />
</div>

</form>

次に、これらすべてを1つの関数に結合する必要があります。この関数は、正規表現をパラメーターとして受け入れる必要があります。したがって、3つの引数()を受け入れるJavaScript関数が1つあるはず<<selector for input field>>, <<regular Expression>>, <<Error message>>です。これを達成する方法を助けてください。

4

3 に答える 3

1
function expression(selector, regex, error) {
    if (selector.value.search(regex)==-1) {
        alert(error);
    }
}

selectorの線に沿ったものでなければならないでしょうdocument.myform.inp1

于 2012-09-27T12:30:55.497 に答える
0

このようにできます。

function checkItem(elem, regex, errMsg) {
    if (elem.value.search(regex) == -1) {
        alert(errMsg);
    }
}

例:

checkItem(document.myform.inp1, /^(\s*|\d+)$/, "validation for digits failed");
于 2012-09-27T12:31:01.897 に答える
0

まず、検証関数をオブジェクトに入れます。

var validationFunctions = {
    digits: function (val) {
        ... fn1 here ...
    },
    currency: function (val) {
        ... fn2 here ...
    },
    date: function (val) {
        ... fn3 here ...
    }
};

次に、ジェネリック関数は次のようになります。

var validate = function (elementID, type) {
    var value = document.getElementById(elementID).value;

    return validationFunctions[type](value);
};

次のように呼び出します。

validate('inputBoxID', 'digits');
validate('inputBoxID', 'currency');
validate('inputBoxID', 'date');
于 2012-09-27T12:34:23.150 に答える