下面是关于“微信小程序表单验证功能完整实例”的详细攻略,包含了代码实现和示例说明。
1. 简介
在微信小程序开发过程中,我们经常需要使用表单来收集用户数据。为了保证数据的有效性和安全性,我们需要对表单数据进行验证。下面我们就来介绍一种微信小程序表单验证功能的完整实例。
2. 实现步骤
2.1 HTML 结构
首先,我们需要在 HTML 中添加表单元素,并设置相应的 ID 和 name。在本例中,我们需要验证用户的姓名、手机号码和电子邮件地址,所以表单中需要包含这三个表单元素。具体代码如下:
<form>
<div>
<label>姓名:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label>手机号码:</label>
<input type="tel" id="phone" name="phone" required>
</div>
<div>
<label>电子邮件地址:</label>
<input type="email" id="email" name="email" required>
</div>
<button type="submit">提交</button>
</form>
2.2 验证规则
我们需要对用户输入的姓名、手机号码和电子邮件地址进行验证。在本例中,我们要求姓名必须是汉字,手机号码必须是11位数字,电子邮件地址必须符合标准格式。验证规则代码如下:
const chineseRegex = /^[\u4e00-\u9fa5]+$/; // 匹配中文字符
const phoneRegex = /^[1][3,4,5,7,8][0-9]{9}$/; // 匹配 11 位手机号码
const emailRegex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; // 匹配电子邮件地址
2.3 表单验证
当用户提交表单时,我们需要对表单数据进行验证。如果验证成功,我们就可以将数据通过 AJAX 或其他方式发送到服务器。如果验证失败,我们需要向用户显示相应的错误提示信息。具体表单验证代码如下:
const form = document.querySelector('form');
form.addEventListener('submit', (event) => {
event.preventDefault();
const nameInput = document.querySelector('#name');
const phoneInput = document.querySelector('#phone');
const emailInput = document.querySelector('#email');
const name = nameInput.value.trim();
const phone = phoneInput.value.trim();
const email = emailInput.value.trim();
let isValid = true;
if (!chineseRegex.test(name)) {
isValid = false;
nameInput.setCustomValidity('姓名必须为汉字');
}
if (!phoneRegex.test(phone)) {
isValid = false;
phoneInput.setCustomValidity('手机号码格式不正确');
}
if (!emailRegex.test(email)) {
isValid = false;
emailInput.setCustomValidity('电子邮件地址格式不正确');
}
if (isValid) {
// 验证成功,可以将数据发送到服务器
} else {
// 验证失败,显示错误提示信息
nameInput.reportValidity();
phoneInput.reportValidity();
emailInput.reportValidity();
}
});
在上面的代码中,我们首先监听表单的 submit 事件,并禁止表单的默认提交行为。然后,我们获取表单中的三个输入框,并获取它们的值并去掉前后的空白字符。接着,我们定义一个变量 isValid,表示表单数据是否符合验证规则。
接下来,我们使用正则表达式对输入框的值进行验证,如果有输入框的值不符合验证规则,就将 isValid 设为 false,并通过 setCustomValidity 方法设置输入框的自定义验证错误信息。最后,如果 isValid 为 true,说明所有的输入框的值都符合验证规则,可以将数据发送到服务器;如果 isValid 为 false,说明有输入框的值不符合验证规则,我们就调用 reportValidity 方法显示错误提示信息。
3. 示例说明
下面,我们来看两条完整示例说明:
3.1 示例1
假设我们的用户要填写一个表单,包含姓名、手机号码和电子邮件地址等几个输入框。我们可以使用上面的代码,对用户输入的数据进行验证,如果验证成功就将数据发送到服务器,否则我们就向用户显示相应的错误提示信息。
<form>
<div>
<label>姓名:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label>手机号码:</label>
<input type="tel" id="phone" name="phone" required>
</div>
<div>
<label>电子邮件地址:</label>
<input type="email" id="email" name="email" required>
</div>
<button type="submit">提交</button>
</form>
<script>
const chineseRegex = /^[\u4e00-\u9fa5]+$/; // 匹配中文字符
const phoneRegex = /^[1][3,4,5,7,8][0-9]{9}$/; // 匹配 11 位手机号码
const emailRegex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; // 匹配电子邮件地址
const form = document.querySelector('form');
form.addEventListener('submit', (event) => {
event.preventDefault();
const nameInput = document.querySelector('#name');
const phoneInput = document.querySelector('#phone');
const emailInput = document.querySelector('#email');
const name = nameInput.value.trim();
const phone = phoneInput.value.trim();
const email = emailInput.value.trim();
let isValid = true;
if (!chineseRegex.test(name)) {
isValid = false;
nameInput.setCustomValidity('姓名必须为汉字');
}
if (!phoneRegex.test(phone)) {
isValid = false;
phoneInput.setCustomValidity('手机号码格式不正确');
}
if (!emailRegex.test(email)) {
isValid = false;
emailInput.setCustomValidity('电子邮件地址格式不正确');
}
if (isValid) {
// 验证成功,可以将数据发送到服务器
console.log('表单验证成功');
console.log('姓名:' + name);
console.log('手机号码:' + phone);
console.log('电子邮件地址:' + email);
} else {
// 验证失败,显示错误提示信息
nameInput.reportValidity();
phoneInput.reportValidity();
emailInput.reportValidity();
}
});
</script>
在这个示例中,我们首先使用 HTML 创建一个表单,包含三个输入框和一个提交按钮。然后,我们使用 JavaScript 对用户输入的数据进行验证,如果验证成功,就将数据发送到服务器。如果验证失败,我们就向用户显示相应的错误提示信息。
3.2 示例2
假设我们需要在页面中动态添加表单元素,然后对它们进行验证。我们可以使用下面的代码,在 JavaScript 中创建表单元素,并对它们进行验证。
<div id="form-container">
<button id="add-form-btn">添加表单元素</button>
</div>
<script>
const chineseRegex = /^[\u4e00-\u9fa5]+$/; // 匹配中文字符
const phoneRegex = /^[1][3,4,5,7,8][0-9]{9}$/; // 匹配 11 位手机号码
const emailRegex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; // 匹配电子邮件地址
const formContainer = document.querySelector('#form-container');
const addFormBtn = document.querySelector('#add-form-btn');
addFormBtn.addEventListener('click', () => {
const form = document.createElement('form');
const nameInput = document.createElement('input');
const phoneInput = document.createElement('input');
const emailInput = document.createElement('input');
const submitBtn = document.createElement('button');
nameInput.type = 'text';
nameInput.id = 'name';
nameInput.name = 'name';
nameInput.required = true;
phoneInput.type = 'tel';
phoneInput.id = 'phone';
phoneInput.name = 'phone';
phoneInput.required = true;
emailInput.type = 'email';
emailInput.id = 'email';
emailInput.name = 'email';
emailInput.required = true;
submitBtn.type = 'submit';
submitBtn.textContent = '提交';
form.append(nameInput, phoneInput, emailInput, submitBtn);
formContainer.append(form);
form.addEventListener('submit', (event) => {
event.preventDefault();
const name = nameInput.value.trim();
const phone = phoneInput.value.trim();
const email = emailInput.value.trim();
let isValid = true;
if (!chineseRegex.test(name)) {
isValid = false;
nameInput.setCustomValidity('姓名必须为汉字');
}
if (!phoneRegex.test(phone)) {
isValid = false;
phoneInput.setCustomValidity('手机号码格式不正确');
}
if (!emailRegex.test(email)) {
isValid = false;
emailInput.setCustomValidity('电子邮件地址格式不正确');
}
if (isValid) {
// 验证成功,可以将数据发送到服务器
console.log('表单验证成功');
console.log('姓名:' + name);
console.log('手机号码:' + phone);
console.log('电子邮件地址:' + email);
} else {
// 验证失败,显示错误提示信息
nameInput.reportValidity();
phoneInput.reportValidity();
emailInput.reportValidity();
}
});
});
</script>
在这个示例中,我们在 HTML 中创建了一个 div 容器和一个按钮,用来容纳表单元素。然后,我们在 JavaScript 中创建了一个空表单,并向其中添加了三个输入框和一个提交按钮。接着,我们为表单的 submit 事件添加了一个监听器,并在监听器中对输入框的值进行验证。最后,我们将表单加入到 div 容器中。
当用户点击按钮时,我们会动态添加一个新的表单元素。用户可以填写新的数据并提交表单,程序会对数据进行验证,如果验证成功则将数据发送到服务器。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序表单验证功能完整实例 - Python技术站