javascript表单验证
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript表单验证,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4907字,纯文字阅读大概需要8分钟。
内容图文
表单HTML
< form action ="" method ="post" > < fieldset class ="login" > < legend >Login information</legend><label for="userName" class="hover">UserName:</label><input type="text" id="userName" class="required text"/><br /><label for="password" class="hover">Password:</label><input type="text" id="password" class="required text"/><br /></fieldset><fieldset><legend>Personal Information</legend><label for="name" class="hover">Name:</label><input type="text" id="name" class="required text"/><br /><label for="email" class="hover">Email:</label><input type="text" id="email" class="required text email"/><br /><label for="date" class="hover">Date:</label><input type="text" id="date" class="required text"/><br /><label for="url" class="hover">Website:</label><input type="text" id="url" class="url text" value="http://"/><br /><label for="phone" class="hover">Phone:</label><input type="text" id="phone" class="phone text"/><br /><label for="age" class="hover">Age:</label><input type="checkbox" id="age" name="age" value="yes"/><br /><input type="submit" value="Submit Form" class="submit"/></fieldset></form>
表单的CSS样式
form { font-family: Arial; font-size: 14px; width: 300px; } fieldset { border: 1px solid #ccc; margin-bottom: 10px; } fieldset.login input { width: 125px; } legend { font-weight: bold; font-size: 1.1em; } label { display: block; width: 60px; text-align: right; float: left; padding-right: 10px; margin: 5px 0; } input { margin: 5px 0; } input.text { padding: 0 0 0 3px; width: 172px; } input.submit { margin: 15px 0 0 70px; } ul.errors { list-style: none; background: #ffcece; padding: 3px; margin: 3px 0 3px 70px; font-size: 0.9em; width: 165px; }
表单JavaScript
var errMsg = { //检查特定字段是否必填 required: { msg: ‘This field is required.‘, test: function (obj, load) { return obj.value.length > 0 && obj.value != obj.defaultValue; } }, //确保字段内容是正确的email地址 email: { msg: ‘Not a valid email address.‘, test: function (obj) {//确保有内容的输入并符合email地址的格式return !obj.value || /^[a-z0-9_+.-]+\@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/i.test(obj.value); } }, //确保字段内容是电话号码并将其自动格式化 phone: { msg: ‘Not a valid phone number‘, test: function (obj) { var m = /(\d{3}).*(\d{3}).*(\d{4})/.exec(obj.value); if (m) { obj.value = "(" + m[1] + ")" + m[2] + "-" + m[3]; return !obj.value || m; } } }, //确保字段内容符合MM/DD/YYYY的时间格式 date: { msg: ‘Not a valid date.‘, test: function (obj) { return !obj.value || /^\d{2}\/d{2}\/d{2,4}$/.test(obj.value); } }, url: { msg: ‘Not a valid URL.‘, test: function (obj) { return !obj.value || obj.value == ‘http:://‘ || /^https?:\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/.test(obj.value); } } }; //隐藏当前正在显示的任何错误信息function hideErrors(elem) { var next = elem.nextSibling;//获取当前字段的下一个元素if (next && next.nodeName == ‘UL‘ && next.className == ‘errors‘) {//如果下一个元素是ul并有class为errors elem.parentNode.removeChild(next);//删掉它 } } //显示表单内特定字段的错误信息function showErrors(elem, errors) { var next = elem.nextSibling;//获取当前字段的下一个元素if (next && (next.nodeName != ‘UL‘ || next.className != ‘errors‘)) { next = document.createElement(‘ul‘); next.className = ‘errors‘; elem.parentNode.insertBefore(next, elem.nextSibling); } //有一个包含错误的容器引用,我们可以遍历所有的错误信息for (var i = 0; i < errors.length; i++) { var li = document.createElement(‘li‘);//为每一个错误信息创建新的li包裹器 li.innerHTML = errors[i]; next.appendChild(li);//并插入到dom中 } } //验证表单所有字段的函数//form参数应是一个表单元素的引用 //load参数应该是一个布尔值 用以判别验证函数在页面加载时执行还是动态执行function validateForm(form, load) { var valid = true; for (var i = 0; i < form.elements.length; i++) {//遍历表单的所有字段的一个数组 hideErrors(form.elements[i]);//先将所有错误信息隐藏if (!validateField(form.elements[i], load)) { valid = false; } } return valid;//如果字段是不正确的内容,则返回false,反之则返回true; } //验证单个字段的内容function validateField(elem, load) { var errors = []; for (var name in errMsg) { var re = new RegExp("(^|\\s)" + name + "(\\s|$)"); if (re.test(elem.className) && !errMsg[name].test(elem, load)) {//如果没有通过验证,把错误信息增加到列表中 errors.push(errMsg[name].msg); } } if (errors.length) {//如果存在错误信息,则显示出来 showErrors(elem, errors); } return errors.length > 0; } function getInputsByName(name) { var result = [];//匹配的input元素的数组 result.numChecked = 0;//追踪被选中元素的数量var input = document.getElementsByTagName(‘input‘); for (var i = 0; i < input.length; i++) { if (input[i].name == name) {//找出所有指定name的字段 result.push(input[i]);//保存结果if (input[i].checked) {//记录被选中字段的数量 result.numChecked++; } } } return result;//返回匹配的字段集合 } window.onload = function () { var form = document.getElementsByTagName(‘form‘)[0]; form.onsubmit = function () { validateForm(form, ‘submit‘); returnfalse; } }
原文:http://www.cnblogs.com/liyunhua/p/4526222.html
内容总结
以上是互联网集市为您收集整理的javascript表单验证全部内容,希望文章能够帮你解决javascript表单验证所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。