[英]How to validate input using javascript
<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等。 请告诉我 :)
我的个人推荐是这样的:
<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>
如果你不打算使用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;
}
$('#form input').each(function(){
console.log('valid',$(this)[0].validity.valid);
});
在这种情况下最简单的是使用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之类的东西。
我使用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个价格,并且仅当所有5个符合您的验证规则时才返回true。
jQuery Form Validator是一个功能丰富的多语言jQuery插件,可以轻松验证用户输入,同时保持HTML标记从javascript代码中清除。
尽管这个插件具有广泛的验证功能,但它的设计要求尽可能少的jQuery网络流量。 这是通过将“模块”中的验证功能组合在一起来实现的,从而可以仅加载验证特定表单所需的那些功能。
<form action="/registration" method="POST">
<p>
User name (4 characters minimum, only alphanumeric characters):
<input data-validation="length alphanumeric" data-validation-length="min4">
</p>
<p>
Year (yyyy-mm-dd):
<input data-validation="date" data-validation-format="yyyy-mm-dd">
</p>
<p>
Website:
<input data-validation="url">
</p>
<p>
<input type="submit">
</p>
</form>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script>
<script>
$.validate({
lang: 'es'
});
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.