仅为整数添加验证
Add validation for integers only?
我有一个脚本,循环遍历所有元素与class="validate"
在提交,如果他们是空的,取消提交,并改变他们的背景颜色。有人知道我可以在同一函数中添加第二个验证的方法,以确保具有class="validate2"
的元素仅为数字(没有单词)?下面是我的脚本:
<script type="text/javascript" >
window.onload = function() {
document.getElementById("formID").onsubmit = function() {
var fields = this.getElementsByClassName("validate"),
sendForm = true,
flag=false;
for(var i = 0; i < fields.length; i++) {
if(!fields[i].value) {
fields[i].style.backgroundColor = "#ffb8b8";
flag=true;
sendForm = false;
window.scrollTo(0,0);
}
else {
fields[i].style.backgroundColor = "#fff";
}
}
if(!sendForm) {
return false;
}
</script>
试试:
<script type="text/javascript" >
window.onload = function() {
document.getElementById("formID").onsubmit = function() {
var fields = this.elements;
sendForm = true;
var flag=false;
for(var i = 0; i < fields.length; i++) {
if (fields[i].className == 'validate' || fields[i].className == 'validate2') {
alert(fields[i].className);
if (fields[i].value.length == 0) {
fields[i].style.backgroundColor = "#ffb8b8";
flag=true;
sendForm = false;
window.scrollTo(0,0);
}
else if (fields[i].className == 'validate2' && isNaN(Number(fields[i].value))) {
fields[i].style.backgroundColor = "#ffb8b8";
flag=true;
sendForm = false;
window.scrollTo(0,0);
}
else {
fields[i].style.backgroundColor = "#fff";
}
}
}
if(!sendForm) {
return false;
}
}
}
Replace:
if(!fields[i].value)
if(+fields[i].value || +fields[i].value === 0)
在第二次验证中。基本上是将值转换为数字。如果有效,继续。
var fields = this.getElementsByClassName("validate"),
fields2 = this.getElementsByClassName("validate2"),
sendForm = true,
flag=false;
for(var i = 0; i < fields.length; i++) {
if(!fields[i].value) {
fields[i].style.backgroundColor = "#ffb8b8";
flag=true;
sendForm = false;
window.scrollTo(0,0);
}
else {
fields[i].style.backgroundColor = "#fff";
}
}
for(var i = 0; i < fields2.length; i++) {
if(+fields2[i].value && +fields2[i].value === 0) {
fields2[i].style.backgroundColor = "#ffb8b8";
flag=true;
sendForm = false;
window.scrollTo(0,0);
}
else {
fields2[i].style.backgroundColor = "#fff";
}
}
if(!sendForm) {
return false;
}
基本上与具有类"validate"的元素相同,再次具有类"validate2"的元素,但检查值是否为数字(通过正则表达式完成)。注意-如果你的字段有两个类,你可能需要添加更多的逻辑。
var fields = this.getElementsByClassName("validate"),
numfields = this.getElementsByClassName("validate2"),
sendForm = true;
var flag=false;
for(var i = 0; i < fields.length; i++) {
if(!fields[i].value) {
fields[i].style.backgroundColor = "#ffb8b8";
flag=true;
sendForm = false;
window.scrollTo(0,0);
}
else {
fields[i].style.backgroundColor = "#fff";
}
}
for(var i = 0; i < numfieldsfields.length; i++) {
if((numfields[i].value.search(/^'s*'d+'s*$/) != -1) {
numfields[i].style.backgroundColor = "#ffb8b8";
flag=true;
sendForm = false;
window.scrollTo(0,0);
}
else {
numfields[i].style.backgroundColor = "#fff";
}
}
if(!sendForm) {
return false;
}
这可能行得通-
window.onload = function() {
document.getElementById("formID").onsubmit = function() {
var fields = this.getElementsByClassName("validate"),
sendForm = true,
flag = false;
for (var i = 0; i < fields.length; i++) {
if (!fields[i].value) {
fields[i].style.backgroundColor = "#ffb8b8";
flag = true;
sendForm = false;
window.scrollTo(0, 0);
}
else {
fields[i].style.backgroundColor = "#fff";
}
if (hasClass(fields[i], "numeric")) {
if (!isInteger(fields[i].value)) {
fields[i].style.backgroundColor = "#ffb8b8";
flag = true;
sendForm = false;
window.scrollTo(0, 0);
}
if (!sendForm) {
return false;
}
}
}
}
}
var isInteger_re = /^'s*('+|-)?'d+'s*$/;
function isInteger(s) {
return String(s).search(isInteger_re) != -1
}
function hasClass(element, cls) {
return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
这没什么特别的,它只是检查元素是否有"numeric"类,然后对它运行一个正则表达式,看看它是否是一个整数。奇迹发生在这里…
var isInteger_re = /^'s*('+|-)?'d+'s*$/;
function isInteger(s) {
return String(s).search(isInteger_re) != -1
}
function hasClass(element, cls) {
return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
因此,包含以下内容的输入应该被拾取…
<input type='text' class='required numeric' />
在我看来,采用某种框架或插件来避免重复发明轮子是值得的。我敢肯定,有大量可行的轻量级候选产品可以用于此目的。就我个人而言,我使用jQuery,所以使用辅助验证是很容易的,它具有相当的可扩展性和非常易于使用。
干杯!
德里克。
相关文章:
- jQuery工具验证器自定义效果-添加&消除影响
- javascript中添加验证电子邮件的问题
- 在验证器中添加自定义规则以检查<ul>具有元素
- jQuery验证器添加方法未定义
- 添加@javascript标记时,Cucumber中的HTTP身份验证失败
- 如何将此验证添加到表单中
- 通过javascript向表单动态添加验证
- 为什么 MVC4 验证 js 自动将数字验证添加到日期时间
- 我将 javascript 验证添加到我的登录控件中,尽管存在错误
- 如何将电话号码和电子邮件验证添加到Kendo-UI Grid
- 将自定义验证添加到角度文本区域
- simpleCart(js)将表单输入验证添加到电子邮件结账提交中
- 表单验证-添加/删除Jquery动态添加的内容
- 向Facebook身份验证添加两个URL
- 向验证添加输入
- 我的jquery验证添加方法密码规则的问题
- 使用Jquery验证添加自定义错误消息
- 如何最好地将客户端验证添加到这两个字段中
- 将 JavaScript 最小长度验证添加到文本字段
- 向Javascript验证添加警报