如何使用javascript验证输入

时间:2009-08-27 23:47:22

标签: javascript validation

<script type="text/javascript">
function validate() {
    if (document.form.price.value.trim() === "") {
        alert("Please enter a price");
        document.form.price.focus();
        return false;
    }
    if (document.form.price.value !== "") {
        if (! (/^\d*(?:\.\d{0,2})?$/.test(document.form.price.value))) {
            alert("Please enter a valid price");
            document.form.price.focus();
            return false;
        }
    }
    return true;
}
</script>

<form action="" method="post" name="form" id="form" onsubmit="return validate(this);">

<input name="price"  type="text" class="r2" />
<input name="price2" type="text" class="r2" />
<input name="price3" type="text" class="r2" />
<input name="price4" type="text" class="r2" />
<input name="price5" type="text" class="r2" />
...more....
<input name="price50" type="text" class="r2" />

此javascript代码可以正常运行以验证字段“价格”。

问题:

如何使代码作为全局验证工作?示例:将使用单个函数验证价格,price2,price3,price4,price5等。请让我知道:))

7 个答案:

答案 0 :(得分:13)

我的个人推荐是这样的:

<script type="text/javascript">
function validate() {
    return [
        document.form.price,
        document.form.price2,
        document.form.price3,
        document.form.price4,
        document.form.price5
    ].every(validatePrice)
}

function validatePrice(price)
{
    if (price.value.trim() === "") {
        alert("Please enter a price");
        price.focus();
        return false;
    }
    if (price.value !== "") {
        if (! (/^\d*(?:\.\d{0,2})?$/.test(price.value))) {
            alert("Please enter a valid price");
            price.focus();
            return false;
        }
    }
    return true;       
}
</script>

答案 1 :(得分:4)

如果您不打算使用jQuery,这应该可行。

function validate() {
    for (var field in document.getElementsByTagName('input')) {
        if (isPriceField(field)) {
            field.value = field.value.trim();
            if (isNaN(parseFloat(field.value))) {
                return alertAndFocus(field, "Please enter a valid price");
            }
        }               
    }

    return true;
}

function isPriceField(field) {
    return (field.name.substr(0, Math.min(5, field.name.length)) === 'price')
}

function alertAndFocus(field, message) {
    alert(message);
    field.focus();
    return false;
}

答案 2 :(得分:3)

$('#form input').each(function(){

   console.log('valid',$(this)[0].validity.valid);

});

答案 3 :(得分:1)

在这种情况下最简单的就是使用jQuery。这样,您可以使用通用选择器并对所有项目应用验证。

$("#price*").each(function() {//Do your validation here $(this) is the item price, then price2 then price3})

对于其他任何你需要查询DOM的东西,然后在所有浏览器中都不能正常工作。

今天,您无法在Javascript中执行任何操作并忽略jQuery http://docs.jquery.com/或Scriptalicious等内容。

答案 4 :(得分:1)

我使用jsFormValidator来验证我的表单,它就像一个魅力。您不需要为HTML标记添加繁重的语法,例如:

 <input type="text" name="username" placeholder="Username" data-validate/>

您只需创建一个基本的JSON对象来描述您希望如何验证表单:

{
"email": {
    "validEmail":true,
    "required":true
},

"username": {
    "minLength":5,
    "maxLength":15
},

"password": {
    "validPassword":true,
    "match": "password",
    "required":true
}

}

然后您只需使用单行代码验证整个表单:

  jsFormValidator.App.create().Validator.applyRules('Login'); //Magic!

答案 5 :(得分:0)

您可以验证所有5个价格,并且仅当所有5个符合您的验证规则时才返回true。

答案 6 :(得分:0)

{{1}}