问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么自己写form表单验证自定义规则

发布网友 发布时间:2022-04-23 08:45

我来回答

1个回答

热心网友 时间:2022-04-19 07:01

实现表单自定义验证消息,实际上很简单。大体思路为:
1、首先我们要设置表单的验证规则
2、然后根据表单的验证规则定义要显示验证消息,
3、最后通过JavaScript 和CSS相结合先将所有预定义的验证消息隐藏掉,然后再根据表单中的输入是否符合验证规则来控制验证消息的显隐状态。
下面我们就来通过一个具体的示例进行讲解,你可以将这个示例直接放在浏览器中运行查看效果,但是要注意代码中引用了第三方类库jQuery,运行时你要自己设置一下:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Forms: 验证提示</title>
// 设置一些必要的样式,如验证消息的文字样式和控制验证消息显隐的样式
<style>
input:valid {
background: #fff;
}

input:invalid {
background: #fcc;
color: #333;
}

.validation-messages {
margin-bottom:15px;
}

.validation-messages span {
font-size:0.8em;
background-color:#eee;
padding:6px;
border:1px solid #ccc;
border-radius:10px;
color:#666;
}
//所有class属性为hide的元素都会被隐藏
.hide {
display:none;
}
</style>
</head>
<body>
<article>
<h1>Forms<span> - 验证提示</span></h1>
</article>
<div id="result-stub" class="well hidden">
<form id="change-email-form" name="change-email-form">
<fieldset>
<h4>修改邮箱地址</h4>
//设置表单应该遵循的验证规则。
//pattern 属性:规定用于验证输入字段的模式。
//maxlength 属性:规定输入字段的最大长度,以字符个数计。
//required属性:规定该input元素为必须的元素。
<label>用户名:</label>
<input type="text" name="username"
id="username" pattern="[a-zA-Z ]{5,}"
maxlength="30" required />
//设置表单的验证消息,并结合class属性样式将其隐藏起来
<div>
//这里的data-rule的属性值是HTML5表单中内置的验证规则中的一种
<span data-rule="valueMissing"
class="hide">用户名不能为空.</span>
<span data-rule="patternMismatch"
class="hide">必须是字母字符(长度应为5~30个字符).</span>
</div>

<label>邮箱地址:</label>
//设置表单应该遵循的验证规则。
<input type="email" name="email" id="email"
title="Email address is required" required />
//设置表单的验证消息,并结合class属性样式将其隐藏起来
<div>
<span data-rule="valueMissing">
邮箱地址不能为空.</span>
<span data-rule="typeMismatch">
邮箱格式不正确.</span>
</div>
<hr />
//设置两个按钮,作用分别是“清空表单内容和对表单中的内容进行验证

<button type="submit" id="submit"
name="submit">修改</button>

<button type="button" id="checkValidation"
name="checkValidation"
class="btn">验证</button>
</fieldset>
</form>
</div>

<script>
window.onload= function() {
//---
// 创建一个验证规则容器。
var ruleNames = [];

// 填充验证规则容器.
// 寻找所有具有验证规则的元素,然后将该元素的data-rule属性值添加到验证规则数组中去。
$("[data-rule]").each(function(i, element) {
var ruleName = element.getAttribute('data-rule');
if ($.inArray(ruleName, ruleNames) < 0) {
ruleNames.push(ruleName);
}
});

var
// 首先确定用户界面隐藏了所有验证消息。
// 然后在选定的表单上运行验证规则。
validate = function() {
$(".validation-messages span")
.addClass('hide');

document.getElementById('change-email-form')
.checkValidity();
},

// 查询每个输入的元素,以确定哪个元素无效。
// 一旦检测到无效元素,就遍历验证规则,找到无效的原因,然后通过消息对用户进行提示

validationFail = function(e) {
var
element = e.srcElement,
validity = element.validity;

if (!validity.valid) {
ruleNames.forEach(function(ruleName) {

checkRule(validity,
ruleName,
element);
});

e.preventDefault();
}
},

// 使用 input 元素 的ValidityState 对象的实例来运行验证规则。
//如果这个验证规则返回ture,就表示无法通过验证,在表单中就会有相应的提示信息。
checkRule = function(state, ruleName, ele) {
if (state[ruleName]) {
$(ele).next()
.find('[data-rule="'
+ ruleName + '"]')
.removeClass('hide');
}
};

// 所有验证事件处理程序是附加在input元素上的而不是button元素
$(':input:not(:button)').each(function() {
this.oninvalid = validationFail;
this.onblur = validate;
});

$('#checkValidation').click(validate);
}
</script>
<script src="../js/jquery.js"></script>
</body>
</html>
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 如何添加自定义表单求解 asp如何获取自定义的表单属性值? 表单自定义怎么做啊? 能够定义在form 表单中的属性 表单自定义方法是什么 把vf表单自定义属性的类型(默认逻辑否)改为空字符串 VFP表单属性如何定义 ? 鞠朝哲 什么是流程自定义和表单自定义? VFP表单自定义属性 VFP问题 用户可以给表单添加自定义属性和方法程序??? 如何在visualfoxpro6.0的表单中自定义表单属性和方法? 如何在VF中添加自定义属性??? 努比亚z5s mini 有老人模式吗,手机我是买来给老爸用的。 现在的手机越来越小巧别致了,很多都是触摸式的,这让老年人使用很不方便,有适合老年人用的老年机型吗? 适合老年人用的智能手机有哪些? 适合老年人的手机有什么型号? 迷你手机什么牌子好 星维A7迷你老人机的puk密码 求一款适合老年人的智能手机,要65岁的老人也会用的。 Mini老人手机怎么改中文 自定义表单 如何开发自定义表单? 管理平台的自定义表单,自定义流程是什么意思? 和客CRM的表单自定义怎么设置? 自定义表单怎么确定唯一性呢 jquery 获取form里自定义属性的值 html表单的name可以自己定义吗?下面这样定义对吗?应该怎么写?谢谢... 慢性盆腔炎吃什么中药能根治? 慢性盆腔炎的中医治疗方法 慢性盆腔炎喝中药怎么调理? 慢性盆腔炎的中医治疗 慢性盆腔炎中药能治好么? 中药什么治疗盆腔炎 盆腔炎可以喝中药治疗 慢性盆腔炎中药治疗效果怎样 有什么好的中药方治疗慢性盆腔炎的? 慢性盆腔炎喝中草药能治愈吗 慢性盆腔炎的中医治疗? 吃什么中药治疗盆腔炎效果好? 慢性盆腔炎可以吃什么中药